无法解码任何JSON对象(请求+Pandas)

2024-10-16 20:43:10 发布

您现在位置:Python中文网/ 问答频道 /正文

学习如何使用request库和pandas,但即使在网上有大量的例子,也很难越过起点。你知道吗

我正在尝试使用GET请求从下面的URL提取NBA快照数据,然后将其转换为数据帧:

def extractData():
    Harden_data_url = "https://stats.nba.com/events/?flag=3&CFID=33&CFPARAMS=2017-18&PlayerID=201935&ContextMeasure=FGA&Season=2017-18&section=player&sct=hex"
    response = requests.get(Harden_data_url)
    data = response.json()
    shots = data['resultSets'][0]['rowSet']
    headers = data['resultSets'][0]['headers']
    df = pandas.DataFrame.from_records(shots, columns = headers)

但是,我在第2行“response=请求。获取(网址)

ValueError:无法解码任何JSON对象

我想我错过了一些基本的东西,任何调试帮助是感激的!你知道吗


Tags: 数据urlpandasdatagetresponserequest例子
1条回答
网友
1楼 · 发布于 2024-10-16 20:43:10

问题是您在获取数据时使用了错误的URL。你知道吗

您使用的URL是用于HTML的,它负责站点的布局。数据来自不同的URL,它以JSON格式获取数据。你知道吗

您要查找的数据的正确URL如下:

https://stats.nba.com/stats/shotchartdetail?CFID=33&CFPARAMS=2017-18&ContextMeasure=FGA&DateFrom=&DateTo=&EndPeriod=10&EndRange=28800&GameID=&GameSegment=&GroupQuantity=5&LastNGames=0&LeagueID=00&Location=&Month=0&OnOff=&OpponentTeamID=0&Outcome=&PORound=0&Period=0&PlayerID=201935&PlayerPosition=&RangeType=0&RookieYear=&Season=2017-18&SeasonSegment=&SeasonType=Regular+Season&StartPeriod=1&StartRange=0&TeamID=0&VsConference=&VsDivision=

如果在浏览器上运行它,您只能看到原始的JSON数据,这正是您将在代码中获得的数据,并使其正常工作。你知道吗

这篇博文解释了查找数据URL的方法,尽管自撰写博文后API有了一些变化,但该方法仍然有效: http://www.gregreda.com/2015/02/15/web-scraping-finding-the-api/

相关问题 更多 >