将html表刮入R数据帧

时间:2017-11-14 15:29:32

标签: r screen-scraping rvest xmlnode

我有问题。我必须从网站上提取信息:https://www.transfermarkt.co.uk/premier-league/startseite/wettbewerb/GB1,其中包含俱乐部名称,网站地址(transfermarkt profile)以及球队简介中球场的名称。这是我第一次接触网站提取的数据。任何帮助赞赏。起初我写了这样的代码:

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)

1 个答案:

答案 0 :(得分:0)

正如@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" 
#...