2016-11-05 4 views
0

私はこのコードを実行して、JSONリンクからデータフレームを作成しようとしています。場合によっては、コードが実行されます。それ以外の場合は、エラーメッセージが表示されます(下記)。コードが同じでも、なぜこのようなことが起こるのか分かりません。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) 
+3

テキストを画像として投稿しないでください。 –

+2

外部サイトへのリンクではなく、質問にトレースバックを入れる必要があります。 – thebjorn

+0

エラーメッセージは基本的には何か:あなたが解析しようとしているJSONの最初の文字は既に悪いです。その場所では許可されないか、JSONではまったく許可されません。 –

答えて

1
はこれにあなたの要求のロジックを変更して再試行してください

:ステータスがOKない場合

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

df = [] 
for item in r.json()["resultSets"]: 
    # ... 

r.raise_for_status()が発生します。

また、これはあなたのコードのようにリクエストを2回しません。

関連する問題