[英]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.