繁体   English   中英

最好的html_table

[英]rvest html_table

我正在尝试使用html_tablervest包提取表

library(rvest)
test <- html("http://www.privacyrights.org/data-breach/new?title=")
test %>% html_table(html_nodes("table.data-breach-table")[[1]])

但是,我不断收到错误消息

UseMethod(“ html_nodes”)中的错误:没有适用于'html_nodes'的适用方法应用于“字符”类的对象

如果仍然要嵌套带括号的调用,为什么还要打扰管道呢?

html_table(html_nodes(test, "table.data-breach-table")[[1]])

否则,将满管并使用magrittr

library(magrittr)

test %>% 
  html_nodes("table.data-breach-table") %>% 
  extract2(1) %>%
  html_table()

注意:

  • 您正在使用的URL仍然没有您想要的表
  • 您应该使用最新的rvest并使用read_html

至于为什么它不起作用,说明您的管道test不正确,并且html_nodestable…字符串,而不是它期望的已解析HTML文档。

由于您正在尝试清除漏洞,因此可能会有帮助:

library(rvest)
library(dplyr)
library(pbapply)

urls <- sprintf("http://www.privacyrights.org/data-breach?title=&page=%d", 1:94)

pblapply(urls, function(URL) {

  pg <- read_html(URL)

  tab <- html_nodes(pg, "table")[3]
  rows <- html_nodes(tab, "tr:not(.data-breach-bottom)")

  bind_rows(lapply(seq(2, length(rows)-2, by=2), function(i) {

    tds_1 <- html_nodes(rows[i], "td")
    tds_2 <- html_text(html_nodes(rows[i+1], "td"), trim=TRUE)

    data_frame(date_public=html_text(tds_1[1], TRUE),
               name_loc=html_text(tds_1[2], TRUE),
               entity=html_text(tds_1[3], TRUE),
               type=html_text(tds_1[4], TRUE),
               recs=html_text(tds_1[5], TRUE),
               descr=tds_2[1])

  }))

}) -> things

是我的一个老鬼 如果您确实打算清除所有违规行为,则需要为此添加随机的睡眠延迟。

还请注意,它是歪斜的数据,在您尝试使用它时要非常意识到它的局限性(我从事数据泄露研究为生)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM