首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何抓取NBA数据?

如何抓取NBA数据?
EN

Stack Overflow用户
提问于 2019-11-03 01:44:31
回答 2查看 1.3K关注 0票数 1

我想用场均得分(PPG)之类的数据来比较不同联盟的新秀。ESPN和NBA有很好的表格可供抓取(篮球参考也是如此),但我刚刚发现它们不是以html格式存储的,所以我不能使用rvest。对于上下文,我尝试像这样抓取表格(from NBA):

https://i.stack.imgur.com/SdKjE.png

我正在尝试学习如何使用HTTR和JSON来实现这一点,但我遇到了一些问题。我遵循了this post中的答案,但它对我不起作用。

这是我尝试过的:

代码语言:javascript
运行
复制
library(httr)
library(jsonlite)
coby.white <- GET('https://www.nba.com/players/coby/white/1629632')
out <- content(coby.white, as = "text") %>%
  fromJSON(flatten = FALSE)

但是,我得到一个错误:

代码语言:javascript
运行
复制
Error: lexical error: invalid char in json text.
                                       <!DOCTYPE html><html class="" l
                     (right here) ------^

有没有更简单的方法从ESPN或NBA获取表格,或者有解决这个问题的方法?

EN

回答 2

Stack Overflow用户

发布于 2019-11-03 02:59:39

ppg和其他统计数据来自]

代码语言:javascript
运行
复制
https://data.nba.net/prod/v1/2019/players/1629632_profile.json

和球员信息,例如体重,身高

代码语言:javascript
运行
复制
https://www.nba.com/players/active_players.json

因此,您可以使用jsonlite来解析例如

代码语言:javascript
运行
复制
library(jsonlite)

data <- jsonlite::read_json('https://data.nba.net/prod/v1/2019/players/1629632_profile.json')

您可以在刷新页面时在网络选项卡中找到它们。看起来你可以使用url中的球员id来获取本赛季的不同球员信息。

票数 1
EN

Stack Overflow用户

发布于 2019-12-17 02:54:43

你实际上可以用rvest进行网络抓取,这是一个从篮球参考资料中抓取怀特的总数表的例子。在Sports Reference的网站上,任何不是页面第一个表的内容都会作为评论列出,这意味着我们必须先提取评论节点,然后再提取所需的数据表。

代码语言:javascript
运行
复制
library(rvest)
library(dplyr)

cobywhite = 'https://www.basketball-reference.com/players/w/whiteco01.html'

totalsdf =  cobywhite %>%
read_html %>%
html_nodes(xpath = '//comment()') %>%
html_text() %>%
paste(collapse='') %>%
read_html() %>% 
html_node("#totals") %>% 
html_table()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58673649

复制
相关文章

相似问题

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