使用 Rvest 抓取维基百科 table(错误)
Scraping a wikipedia table with Rvest (error)
我正在尝试在此维基百科页面上抓取 table:
https://en.wikipedia.org/wiki/United_Kingdom_Parliament_constituencies
具体来说,"England" 部分下的 table。这是我的代码:
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()
使用方法错误("xml_find_all"):
没有适用于 'xml_find_all' 的方法应用于 class "character"
的对象
list<- list[[1]]
列表[[1]] 中的错误:'builtin' 类型的对象不是子集table
有人能帮忙吗?
您的第一个错误是因为您试图将 read_html
(html_nodes
) 的方法直接应用于 url。您需要将 read_html(url)
放在命令链中:
items <- read_html(url) %>% html_nodes(xpath='//*[@id="mw-content-text"]/div/table[2]') %>% html_table()
对于你的第二个错误(与我在上面重命名你的变量有关); list 是一种内置方法,因此不应用作变量名。在曾经使用过的地方重命名该变量:
items <- items[[1]]
我可能会重写以使用更快的 css class 选择器和 html_node
方法来仅检索一个 table。然后使用更具描述性的名称。
constituency_table <- read_html(url) %>% html_node('.wikitable') %>% html_table()
我正在尝试在此维基百科页面上抓取 table:
https://en.wikipedia.org/wiki/United_Kingdom_Parliament_constituencies
具体来说,"England" 部分下的 table。这是我的代码:
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()
使用方法错误("xml_find_all"): 没有适用于 'xml_find_all' 的方法应用于 class "character"
的对象list<- list[[1]]
列表[[1]] 中的错误:'builtin' 类型的对象不是子集table
有人能帮忙吗?
您的第一个错误是因为您试图将 read_html
(html_nodes
) 的方法直接应用于 url。您需要将 read_html(url)
放在命令链中:
items <- read_html(url) %>% html_nodes(xpath='//*[@id="mw-content-text"]/div/table[2]') %>% html_table()
对于你的第二个错误(与我在上面重命名你的变量有关); list 是一种内置方法,因此不应用作变量名。在曾经使用过的地方重命名该变量:
items <- items[[1]]
我可能会重写以使用更快的 css class 选择器和 html_node
方法来仅检索一个 table。然后使用更具描述性的名称。
constituency_table <- read_html(url) %>% html_node('.wikitable') %>% html_table()