簡體   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