NBA统计与rvest刮表

hgqdbh6s  于 2023-07-31  发布在  其他
关注(0)|答案(1)|浏览(123)

我想用rvest刮一张NBA球队统计表,我试过使用:
1.表元素

library(rvest)

url_nba <- "http://stats.nba.com/teams/advanced/#!?sort=TEAM_NAME&dir=-1"

team_stats <- url_nba %>% read_html %>% html_nodes('table') %>% html_table

字符串

  1. xpath(通过google chrome inspect)
team_stats <- url_nba %>% 
      read_html %>%
      html_nodes(xpath="/html/body/main/div[2]/div/div[2]/div/div/nba-stat-table/div[1]/div[1]/table") %>%
      html_table

  1. CSS选择器(通过Mozilla Inspect):
team_stats <- url_nba %>% 
      read_html %>%
      html_nodes(".nba-stat-table__overflow > table:nth-child(1)") %>%
      html_table


但没有成功任何帮助将不胜感激。

kx7yvsdv

kx7yvsdv1#

这个问题和这个问题很相似:如何在R中选择JSON数据的特定部分?
您请求的数据没有存储在html代码中,因此使用rvest失败。请求的数据存储为XHR文件,可以直接访问:

library(httr)
library(jsonlite)

nba<-GET('http://stats.nba.com/stats/leaguedashteamstats?Conference=&DateFrom=&DateTo=&Division=&GameScope=&GameSegment=&LastNGames=0&LeagueID=00&Location=&MeasureType=Advanced&Month=0&OpponentTeamID=0&Outcome=&PORound=0&PaceAdjust=N&PerMode=PerGame&Period=0&PlayerExperience=&PlayerPosition=&PlusMinus=N&Rank=N&Season=2016-17&SeasonSegment=&SeasonType=Regular+Season&ShotClockRange=&StarterBench=&TeamID=0&VsConference=&VsDivision=' )

字符串
数据加载到nba变量后,使用httr和jsonlite清理数据:

#access the data
out<- content(nba, as="text") %>% fromJSON(flatten=FALSE) 

#convert into dataframe.  
#  str(out) to determine the structure
df<-data.frame(out$resultSets$rowSet)
names(df)<-out$resultSets$headers[[1]]


我强烈建议阅读我上面链接的问题的答案。

相关问题