我正在尝试为数据科学 101 项目抓取曲棍球参考资料。我遇到了特定表的问题。网页是:https://www.hockey-reference.com/boxscores/201611090BUF.html。所需的表格位于“高级统计报告(所有情况)”下。我尝试过以下代码:
url="https://www.hockey-reference.com/boxscores/201611090BUF.html"
ret <- url %>%
read_html()%>%
html_nodes(xpath='//*[contains(concat( " ", @class, " " ), concat( " ", "right", " " ))]') %>%
html_text()
此代码从上面的表中抓取所有数据,但在高级表之前停止。我也尝试过更细化:
url="https://www.hockey-reference.com/boxscores/201611090BUF.html"
ret <- url %>%
read_html()%>%
html_nodes(xpath='//*[(@id = "OTT_adv")]//*[contains(concat( " ", @class, " " ), concat( " ", "right", " " ))]') %>%
html_text()
产生“字符(0)”消息。任何和所有的帮助将不胜感激..如果还不清楚,我对 R 还很陌生。谢谢!
您试图获取的信息隐藏为网页上的评论。 这是一个需要一些工作来清理最终结果的解决方案:
library(rvest)
url="https://www.hockey-reference.com/boxscores/201611090BUF.html"
page<-read_html(url) # parse html
commentedNodes<-page %>%
html_nodes('div.section_wrapper') %>% # select node with comment
html_nodes(xpath = 'comment()') # select comments within node
#there are multiple (3) nodes containing comments
#chose the 2 via trial and error
output<-commentedNodes[2] %>%
html_text() %>% # return contents as text
read_html() %>% # parse text as html
html_elements('table') %>% # select table node
html_table() # parse table and return data.frame # parse table and return data.frame
输出将是一个包含 2 个元素的列表,每个元素对应一个表。 每个可用选项的玩家姓名和统计数据都会重复多次,因此您需要清理这些数据以达到最终目的。