我正在尝试在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
我想要生成的输出应该是
等等,这个列表是从HTML表中填充的。
我真的很感激一些指导。感谢。
答案 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"