首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >rvest函数html_nodes返回{xml_nodeset (0)}

rvest函数html_nodes返回{xml_nodeset (0)}
EN

Stack Overflow用户
提问于 2018-07-07 12:03:26
回答 2查看 1.8K关注 0票数 2

我正在尝试抓取以下网站的数据框架

http://stats.nba.com/game/0041700404/playbyplay/

我想创建一个表,其中包括比赛日期、整个比赛的得分和球队名称

我使用了以下代码:

代码语言:javascript
复制
game1 <- read_html("http://stats.nba.com/game/0041700404/playbyplay/")

#Extracts the Date
html_nodes(game1, xpath = '//*[contains(concat( " ", @class, " " ), concat( " ", "game-summary-team--vtm", " " ))]//*[contains(concat( " ", @class, " " ), concat( " ", "game-summary-team__lineup", " " ))]')

#Extracts the Score
html_nodes(game1, xpath = '//*[contains(concat( " ", @class, " " ), concat( " ", "status", " " ))]//*[contains(concat( " ", @class, " " ), concat( " ", "score", " " ))]')

#Extracts the Team names
html_nodes(game1, xpath = '//*[contains(concat( " ", @class, " " ), concat( " ", "game-summary-team__name", " " ))]//a')

不幸的是,我得到了以下信息

代码语言:javascript
复制
{xml_nodeset (0)}
{xml_nodeset (0)}
{xml_nodeset (0)}

我已经看到了一堆问题和答案,但似乎没有一个有帮助。

EN

回答 2

Stack Overflow用户

发布于 2018-07-15 04:13:59

不幸的是,rvest不能很好地处理动态创建的JavaScript页面。它在处理静态HTML网页时效果最好。

我建议你看看RSelenium。最后,我使用rsDriver从页面中得到了一些东西

代码示例:

代码语言:javascript
复制
library(RSelenium)
rD <- rsDriver() # runs a chrome browser, wait for necessary files to download
remDr <- rD$client
#no need for remDr$open() browser should already be open
remDr$navigate("http://stats.nba.com/game/0041700404/playbyplay/")

teams <- remDr$findElement(using = "xpath", "//span[@class='team-full']")
teams$getElementText()[[1]]
# and so on...

remDr$close()
# stop the selenium server
rD[["server"]]$stop() 
# if user forgets to stop server it will be garbage collected.
rD <- rsDriver()
rm(rD)
gc(rD)

以此类推。

PS:我在使用当前的R* this worked * How to set up rselenium for R?在Windows上安装它时遇到了一些问题

票数 1
EN

Stack Overflow用户

发布于 2018-09-21 15:51:07

我在R中成功地使用了splashr包,要安装你需要docker。下面列出的网站中提到了安装说明

https://cran.r-project.org/web/packages/splashr/vignettes/intro_to_splashr.html

https://docs.docker.com/docker-for-mac/install/#install-and-run-docker-for-mac -如何在mac上安装和运行docker

https://splash.readthedocs.io/en/stable/install.html -在使用启动之前,在终端窗口中键入这些代码

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51219793

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档