首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rvest html_table

rvest html_table
EN

Stack Overflow用户
提问于 2015-10-15 09:59:34
回答 1查看 3.4K关注 0票数 0

我试图使用html_tablervest包提取一个表

代码语言:javascript
复制
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”方法

EN

回答 1

Stack Overflow用户

发布于 2015-10-15 11:00:34

如果你无论如何都要嵌套括号内的电话,那为什么还要管管道呢?

代码语言:javascript
复制
html_table(html_nodes(test, "table.data-breach-table")[[1]])

否则,使用完整的管道并使用magrittr

代码语言:javascript
复制
library(magrittr)

test %>% 
  html_nodes("table.data-breach-table") %>% 
  extract2(1) %>%
  html_table()

注意:

  • 您所使用的URL无论如何都没有您想要的表
  • 您应该使用最新的rvestread_html

至于为什么它不能工作,您不正确地传递test,而html_nodestable…字符串上操作,而不是它所期望的解析的table…文档。

既然你在试图破坏,这可能会有帮助:

代码语言:javascript
复制
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

它来自我的一个老吉斯特。如果你计划清除所有的违规行为,你将需要在此基础上增加随机睡眠延迟。

还请注意,它是扭曲的数据,并非常清楚它的局限性,因为你试图使用它(我做数据破坏研究谋生)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33145491

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档