代码之家  ›  专栏  ›  技术社区  ›  Derek Corcoran

尝试用rvest提取r包的链接

  •  0
  • Derek Corcoran  · 技术社区  · 7 年前

    我一直想用这个 question 而这 tutorial 获取列表的表和链接 vailable rpackages in cran

    获取HTML表

    我这么做是对的:

    library(rvest)
    
    page <- read_html("http://cran.r-project.org/web/packages/available_packages_by_name.html") %>% html_node("table") %>% html_table(fill = TRUE, header = FALSE)
    

    试图获取链接

    当我试图获取链接时,我遇到了麻烦,我尝试在表的第一列使用选择器小工具(packages links),得到了节点 td a ,所以我尝试了:

    test2 <- read_html("http://cran.r-project.org/web/packages/available_packages_by_name.html") %>% html_node("td a") %>%  html_attr("href") 
    

    但我只得到第一个链接,然后我想我可以得到所有 href 从表中尝试以下操作:

    test3 <- read_html("http://cran.r-project.org/web/packages/available_packages_by_name.html") %>% html_node("table") %>%  html_attr("href") 
    

    但是什么都没有,我做错什么了?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Aurèle    7 年前

    实际上,缺少“s”: html_nodes() 是用来代替 html_node :

    x <- 
      read_html(paste0(
        "http://cran.r-project.org/web/",
        "packages/available_packages_by_name.html")) 
    
    html_nodes(x, "td a") %>% 
      sapply(html_attr, "href")