从json创建数据框并不总是有效

时间:2016-11-05 15:09:47

标签: python json python-3.x python-requests

我正在尝试运行此代码以从JSON链接创建数据框。有时,代码会运行。其他时候,我会收到一条错误消息(如下)。我不确定为什么会发生这种情况,即使代码是相同的。

import requests
import json

url = "http://stats.nba.com/stats/leaguedashplayerstats?College=&Conference=&Country=&DateFrom=&DateTo=&Division=&DraftPick=&DraftYear=&GameScope=&GameSegment=&Height=&LastNGames=0&LeagueID=00&Location=&MeasureType=Advanced&Month=0&OpponentTeamID=0&Outcome=&PORound=0&PaceAdjust=N&PerMode=Totals&Period=0&PlayerExperience=&PlayerPosition=&PlusMinus=N&Rank=N&Season=2016-17&SeasonSegment=&SeasonType=Regular+Season&ShotClockRange=&StarterBench=&TeamID=0&VsConference=&VsDivision=&Weight="

jd = requests.get(url).json()

df = []
for item in requests.get(url).json()['resultSets']:
    print("got here")
    row_df = []
    for row in item['rowSet']:
        row_df.append(str(row).strip('[]'))
    df.append("\n")
    df.append(row_df)

print(df)

错误讯息:

Traceback (most recent call last):
File "/Users/K/PycharmProjects/mousefun/fun", line 8, in <module>
jd = requests.get(url).json()

File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/requests/models.py", line 812, in json return complexjson.loads(self.text, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/json/__init__.py", line 318, in loads return _default_decoder.decode(s)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/json/decoder.py", line 343, in decode obj, end = self.raw_decode(s, idx=_w(s, 0).end())
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/json/decoder.py", line 361, in raw_decode raise ValueError(errmsg("Expecting value", s, err.value)) from None
ValueError: Expecting value: line 1 column 1 (char 0)

1 个答案:

答案 0 :(得分:1)

将您的请求逻辑更改为此,然后重试:

r = requests.get(url)
r.raise_for_status()

df = []
for item in r.json()["resultSets"]:
    # ...
如果状态不是r.raise_for_status()

OK将会提升。

此外,这不会像您的代码那样执行两次请求。