2017-07-27 64 views
4

我正在試圖抓取維基百科中的表格,並陷入僵局。我以國際足聯2014年世界盃的小隊爲例。在這種情況下,我想從頁面「2014年FIFA世界盃小組」的內容表中提取參賽國名單,並將它們存儲爲矢量。以下是我得到了多少:將HTML中的表格轉換爲數據框

library(tidyverse) 
library(rvest) 
library(XML) 
library(RCurl) 

(Countries <- read_html("https://en.wikipedia.org/wiki/2014_FIFA_World_Cup_squads") %>% 
    html_node(xpath = '//*[@id="toc"]/ul') %>% 
    htmlTreeParse() %>% 
    xmlRoot()) 

這吐出了一堆HTML代碼,我不會複製/粘貼在這裏。我特別想要提取所有標記爲<span class="toctext">的行,如「A組」,「巴西」,「喀麥隆」等,並將它們保存爲向量。什麼功能會使這發生?

回答

3

可以使用html_text()

url <- "https://en.wikipedia.org/wiki/2014_FIFA_World_Cup_squads" 
toc <- url %>% 
    read_html() %>% 
    html_node(xpath = '//*[@id="toc"]') %>% 
    html_text() 

這給你一個特徵向量讀取一個節點的文本。然後,您可以分割的\n性格給你的結果作爲載體(你可以清理掉毛坯)

contents <- strsplit(toc, "\n")[[1]] 

contents[contents != ""] 

# [1] "Contents"         "1 Group A"         "1.1 Brazil"         
# [4] "1.2 Cameroon"        "1.3 Croatia"        "1.4 Mexico"         
# [7] "2 Group B"         "2.1 Australia"        "2.2 Chile"         
# [10] "2.3 Netherlands"       "2.4 Spain"         "3 Group C"         
# [13] "3.1 Colombia"        "3.2 Greece"         "3.3 Ivory Coast"       
# [16] "3.4 Japan"         "4 Group D"         "4.1 Costa Rica"        
# [19] "4.2 England"        "4.3 Italy"         "4.4 Uruguay"        
# --- 
# etc 

一般來說,在HTML文檔中讀取表,你可以使用html_table()功能,但是在這種情況下,目錄不被讀取。

url %>% 
    read_html() %>% 
    html_table()