【问题标题】:Am I using the correct site to view the raw JSON data?我是否使用正确的站点来查看原始 JSON 数据?
【发布时间】:2020-01-20 21:11:14
【问题描述】:

通过谷歌浏览器的网络工具使用NBA Team Stats,我相信我找到了该站点以引导我找到原始 JSON 数据

因此,我使用的是以下 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=

但是,当我尝试访问上述网站时,它无法加载。这使我相信,也许我正在查看错误的信息以使我到达我想去的地方。有什么建议吗?

【问题讨论】:

    标签: json google-chrome url web-scraping


    【解决方案1】:

    该特定页面似乎需要与请求一起发送 Referer 标头,因此仅自行加载它是行不通的。

    在 Power BI 中,如果在添加 Web 数据源时选择“高级”,则可以设置自定义标头。在可选的 Header 部分中输入 Referer 和值 https://stats.nba.com/

    【讨论】:

    • 再一次,你拯救了一天!真是太感谢你了。
    • 您会为https://stats.nba.com/players/advanced/?sort=GP&dir=-1 使用相同的引用吗?它似乎对我不起作用。
    • @JoshThibault 看起来 x-nba-stats-origin:stats 现在可以使用。有趣,因为几天前在原始问题上不需要这样做。
    • 我尝试将https://stats.nba.com/ 包含为Refererx-nba-stats-origin: stats,但我没有任何运气。我也单独尝试过它们,并且得到了相同的结果。
    • 尝试将浏览器中的 Cookie 值添加为标题。
    【解决方案2】:

    经过大量挖掘、研究和反复试验,我终于能够想出一个 Python 脚本(在 Power BI 中),它可以满足我的需求。

    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)
    

    使用此脚本,我可以将所有 JSON 数据转换为格式正确的表格。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      相关资源
      最近更新 更多