在R中刮刮html表及其href链接

时间:2017-05-11 22:08:31

标签: html r xpath rvest

我正在尝试下载包含文本和链接的表。我可以使用链接文本“Pass”成功下载表格。但是,我想要捕获实际的href URL,而不是文本。

library(dplyr)
library(rvest)
library(XML)
library(httr)
library(stringr)

link <- "http://www.qimedical.com/resources/method-suitability/"

qi_webpage <- read_html(link)

qi_table <- html_nodes(qi_webpage, 'table')
qi <- html_table(qi_table, header = TRUE)[[1]]
qi <- qi[,-1]

上面给出了一个很好的数据帧。但是,当我希望将链接与其关联时,最后一列仅包含文本“Pass”。我试图使用以下内容添加链接,但它们不对应正确 行:

qi_get <- GET("http://www.qimedical.com/resources/method-suitability/")
qi_html <- htmlParse(content(qi_get, as="text"))

qi.urls <- xpathSApply(qi_html, "//*/td[7]/a", xmlAttrs, "href")
qi.urls <- qi.urls[1,]

qi <- mutate(qi, "MSTLink" = (ifelse(qi$`Study Protocol(click to download certification)` == "Pass", (t(qi.urls)), "")))

我对html,css等知之甚少,所以我不确定我所缺少的是为了做到这一点。

谢谢!

1 个答案:

答案 0 :(得分:5)

您正在寻找表格单元格a内的td个元素。然后,您需要href 属性的值。所以这是一种方式,它将返回一个包含PDF下载所有URL的向量:

qi_webpage %>%
  html_nodes(xpath = "//td/a") %>% 
  html_attr("href")