Am I using the correct site to view the raw JSON d

2020-05-08 06:25发布

问题:

Using NBA Team Stats through Google Chrome's network tool, I believe I located the site to lead me to the raw JSON data

As a result, I am using the following URL:

https://stats.nba.com/stats/leaguedashteamstats?Conference=&DateFrom=&DateTo=&Division=&GameScope=&GameSegment=&LastNGames=0&LeagueID=00&Location=&MeasureType=Base&Month=0&OpponentTeamID=0&Outcome=&PORound=0&PaceAdjust=N&PerMode=PerGame&Period=0&PlayerExperience=&PlayerPosition=&PlusMinus=N&Rank=N&Season=2019-20&SeasonSegment=&SeasonType=Regular+Season&ShotClockRange=&StarterBench=&TeamID=0&TwoWay=0&VsConference=&VsDivision=

However, when I try to go to the above site, it does not load. This leads me to believe that perhaps I am looking at the wrong piece of information to get me to where I am trying to go. Any tips?

回答1:

That specific page seems to require a Referer header to be sent with the request so just loading it on it's own won't work.

In Power BI you can set custom headers if you select Advanced when adding a Web data source. In the optional Header section enter Referer and a value of https://stats.nba.com/.



回答2:

After much digging, research, and trial & error, I was finally able to come up with a Python script (within Power BI) that would give me exactly what I needed.

import pandas as pd
import numpy
import requests
import json

headers = {'Accept': 'application/json, text/plain, */*','Accept-Encoding': 'gzip, deflate, br',
          'Accept-Language': 'en-US,en;q=0.9','Connection': 'keep-alive','Host': 'stats.nba.com',
          'Referer': 'https://stats.nba.com/','Sec-Fetch-Mode': 'cors','Sec-Fetch-Site': 'same-origin',
          'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) 
          Chrome/79.0.3945.130 Safari/537.36','x-nba-stats-origin': 'stats','x-nba-stats-token': 
          'true',}

url = 'https://stats.nba.com/stats/leaguedashplayerstats?College=&Conference=&Country=&DateFrom=&
    Division=&DraftPick=&DraftYear=&GameScope=&GameSegment=&Height=&LastNGames=0&LeagueID=00&
    Location=&MeasureType=Base&Month=0&OpponentTeamID=0&Outcome=&PORound=0&PaceAdjust=N&
    PerMode=PerGame&Period=0&PlayerExperience=&PlayerPosition=&PlusMinus=N&Rank=N&Season=2019-20&
    SeasonSegment=&SeasonType=Regular+Season&ShotClockRange=&StarterBench=&TeamID=0&TwoWay=0&
    VsConference=&VsDivision=&Weight='

json = requests.get(url, headers=headers).json()

data = json['resultSets'][0]['rowSet']
columns = json['resultSets'][0]['headers']

PpgData = pd.DataFrame.from_records(data, columns=columns)

Using this script allows me to convert all the JSON data to a table that will be properly formatted.