[英]rvest html_table
我正在尝试使用html_table
和rvest
包提取表
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()
注意:
rvest
并使用read_html
至于为什么它不起作用,说明您的管道test
不正确,并且html_nodes
在table…
字符串,而不是它期望的已解析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.