Если вы все равно собираетесь вкладывать вызовы в скобках, зачем возиться с конвейером?
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. Вам нужно будет добавить к этому случайную задержку сна, если вы планируете очистить все их нарушения.
ОБРАТИТЕ ВНИМАНИЕ также, что это искаженные данные, и помните об их ограничениях, когда вы пытаетесь их использовать (я зарабатываю на жизнь исследованием утечки данных).
person
hrbrmstr
schedule
15.10.2015