【问题标题】:Scraping html table and its href Links in R在 R 中抓取 html 表及其 href 链接
【发布时间】:2017-05-12 06:22:30
【问题描述】:

我正在尝试下载包含文本和链接的表格。我可以成功下载带有链接文本“通过”的表格。但是,我想捕获实际的 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]

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

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 等知之甚少,所以我不确定我缺少什么来正确完成这项工作。

谢谢!!

【问题讨论】:

    标签: html r xpath rvest


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。当我自己运行您的代码时,它会以与表中相同的顺序给出它们。但是,当我将您的代码插入到我的 mutate 中时,它再次将它们置于错误的顺序。
    • qi &lt;- mutate(qi, "MSTLink" = (ifelse(qi$Study Protocol(点击下载认证)` == "通过", (qi_webpage %>% html_nodes(xpath = "//td/a") %>% html_attr("href ")), "")))`
    • 也许变异不是要走的路?如果您可以抓取表格并获得与 PDF 向量相同的行数,则可以将向量添加为新列。
    猜你喜欢
    • 2020-04-16
    • 2021-02-28
    • 2017-05-29
    • 2021-03-01
    • 2015-04-28
    • 2019-03-05
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    相关资源
    最近更新 更多