将 html 个表抓取到 R 数据帧中

Scraping html tables into R data frames

我有问题。我必须从网站中提取信息:https://www.transfermarkt.co.uk/premier-league/startseite/wettbewerb/GB1 包括俱乐部的名称、他们网站的地址(transfermarkt 资料)和球队资料中的体育场名称。这是我第一次接触从网站上提取数据。任何帮助表示赞赏。一开始我写了这样的代码:

library(rvest)
theurl <- "https://www.transfermarkt.co.uk/premier-league/startseite/wettbewerb/GB1"
file<-read_html(theurl)
tables<-html_nodes(file, "table")
table1 <- html_table(tables[4], fill = TRUE)

正如@Henry Navarro 所指出的,不清楚您究竟需要哪些节点等。找到正确的节点是一项耗时的任务,因此您需要指定所需的节点。为此,您可以使用 Selectorgadget

在下面的快速示例中,您可以如何生成团队网站列表,您必须使用 rvest 循环访问这些网站以提取信息。我认为到目前为止您为此目的而缺少的主要功能是 html_attr(),例如,参见 answer。当然,你还得在这些网站上找到节点,提取体育场等信息

file %>% 
html_nodes("table") %>%
{ .[4]} %>% 
html_nodes("a") %>% 
html_attr("href") %>% 
{ .[grep("/startseite/verein",., fixed=T)]} %>% 
unique() %>% 
{ paste0("https://www.transfermarkt.co.uk", .) }

# [1] "https://www.transfermarkt.co.uk/fc-chelsea/startseite/verein/631/saison_id/2017"               
# [2] "https://www.transfermarkt.co.uk/manchester-city/startseite/verein/281/saison_id/2017"          
# [3] "https://www.transfermarkt.co.uk/manchester-united/startseite/verein/985/saison_id/2017"        
# [4] "https://www.transfermarkt.co.uk/tottenham-hotspur/startseite/verein/148/saison_id/2017" 
#...