使用R从网站中的表中获取数据

时间:2015-10-19 09:25:20

标签: css r web-scraping

我正在尝试在R中学习网页抓取,我正在尝试从以下链接List of Cuisines on Wiki中抓取各种表格中的数据。在页面的底部有几个表格,列出了我想分别阅读的各种美食。我尝试使用css选择器,但我认为我使用它们错了这里是我的代码片段:

require(rvest)
require(magrittr)
connection = html_session("https://en.wikipedia.org/wiki/List_of_cuisines")
connection %>% html_nodes("table:nth-child(1) a") %>% html_text()
#This lists down all the links in every table there is on that website
#I also tried connection %>% html_nodes("table:nth-child(2) a") %>% html_text()
#which gave a different list altogether

我想要生成的输出应该是

  1. 得出
    • 所有美食清单
  2. 非洲美食
    • 非洲菜系列表
  3. 等等,这个列表是从HTML表中填充的。

    我真的很感激一些指导。感谢。

1 个答案:

答案 0 :(得分:1)

这使用XPath并获取所有单独的链接。我这样做是为了表明一个人怎么做"松散"使用XPath进行子目标定位(您也可以使用CSS选择器进行学位)。希望你有足够的食物可以做你想做的事情。基本上你可以将它分成两个步骤,一个用于获取各个表,另一个用于获取其下的链接:

library(xml2)
library(rvest)

pg <- html_session("https://en.wikipedia.org/wiki/List_of_cuisines")

links <- html_nodes(pg, xpath="//table[contains(@class, 'navbox')]//
                                  table[contains(@class, 'nowraplinks')]//
                                   td[contains(@class, 'navbox-list')]//
                                    li/a")

length(links)
## [1] 1005

head(html_attr(links, "href"), 20)
##  [1] "/wiki/African_cuisine"                 
##  [2] "/wiki/North_African_cuisine"           
##  [3] "/wiki/West_African_cuisine"            
##  [4] "/wiki/List_of_African_cuisines"        
##  [5] "/wiki/Cuisine_of_the_Americas"         
##  [6] "/wiki/North_American_cuisine"          
##  [7] "/wiki/South_American_cuisine"          
##  [8] "/wiki/List_of_cuisines_of_the_Americas"
##  [9] "/wiki/Asian_cuisine"                   
## [10] "/wiki/Central_Asian_cuisine"           
## [11] "/wiki/South_Asian_cuisine"             
## [12] "/wiki/List_of_Asian_cuisines"          
## [13] "/wiki/Balkan_cuisine"                  
## [14] "/wiki/Bengali_cuisine"                 
## [15] "/wiki/Caribbean_cuisine"               
## [16] "/wiki/Caucasian_cuisine"               
## [17] "/wiki/European_cuisine"                
## [18] "/wiki/Central_European_cuisine"        
## [19] "/wiki/Eastern_European_cuisine"        
## [20] "/wiki/List_of_European_cuisines"