用Rvest删除Wikipedia表(错误)

问题描述 投票:0回答:1

我正在尝试在此Wikipedia页面上抓一张桌子:

https://en.wikipedia.org/wiki/United_Kingdom_Parliament_constituencies

特别是“英格兰”部分下的表格。这是我的代码:

install.packages("rvest")
library("rvest")
install.packages("xml2")
library("xml2")
install.packages("magrittr")
library("magrittr")

url <- "https://en.wikipedia.org/wiki/United_Kingdom_Parliament_constituencies"

read_html(url)

list <- url %>% html_nodes(xpath='//*[@id="mw-content-text"]/div/table[2]') %>%
  `html_table()

list<- list[[1]]

但是,我遇到了两个错误:

list <- url %>%
+   html_nodes(xpath='//*[@id="mw-content-text"]/div/table[2]') %>%
+   html_table()

UseMethod(“ xml_find_all”)中的错误:没有适用于“ xml_find_all”的适用方法应用于“字符”类的对象]

list<- list[[1]]

列表[[1]]中的错误:'内置'类型的对象不可子集

任何人都可以帮忙吗?

web-scraping screen-scraping rvest wikipedia
1个回答
0
投票

您的第一个错误是因为您试图将read_htmlhtml_nodes)的方法直接应用于网址。您需要将read_html(url)放在命令链中:

items <- read_html(url) %>% html_nodes(xpath='//*[@id="mw-content-text"]/div/table[2]') %>% html_table()

关于您的第二个错误(与我上面重命名了您的变量有关; list是一种内置方法,因此不应用作变量名。在使用过的地方重命名该变量:

items <- items[[1]] 

我可能会改写以使用更快的CSS类选择器和html_node方法来仅检索一个表。然后使用更具描述性的名称。

constituency_table <- read_html(url) %>% html_node('.wikitable') %>% html_table()
© www.soinside.com 2019 - 2024. All rights reserved.