如果你无论如何都要嵌套带括号的调用,为什么还要麻烦管道呢?
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_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
它来自我的一个老gitst。如果您确实计划清除所有违规行为,则需要在其中添加随机睡眠延迟。
另请注意,它是扭曲的数据,并且在您尝试使用它时要非常清楚它的局限性(我以数据泄露研究为生)。