2017-12-21 19 views
0

これは私の初めてのデータスクラップではありませんが、気に入っています。jsonをPythonリクエストで掻き集める

import csv 
import requests 
import os 

outfile = open("Labs_StartingGoalies.csv","a",newline='') 
writer = csv.writer(outfile) 
header=[ 
    "Home_Tm"] 

writer.writerow(header) 

req = requests.get('https://www.fantasylabs.com/api/lines/4/12-20-2017/startinggoalies') 
data = req.json()['GoalieMatchups'] 

for i, teams in enumerate(data): 
    for i, team in enumerate(teams['Properties']): 
     print (team) 

出力:

EventId 
EventDate 
EventDateTime 
TimeOfDay 
Stadium 
HomeTeam 
HomeEventTeamId 
HomeGoalie 
HomeTwitterName 
HomePrimarySourceKey 
HomeGoalieId 
HomeGoalieSalary_DK 
HomeGoalieSalary_FD 
HomeGoalieStatus 
HomeGoalieText 
HomeModifiedDate 
HomeSourceText 
HomeSourceURL 
HomeMoneyLine 
HomeMoneylineChange 
HomeVegasPoints 
VisitorTeam 
VisitorEventTeamId 
VisitorGoalie 
VisitorTwitterName 
VisitorPrimarySourceKey 
VisitorGoalieId 
VisitorGoalieSalary_DK 
VisitorGoalieSalary_FD 
VisitorGoalieStatus 
VisitorGoalieText 
VisitorModifiedDate 
VisitorSourceText 
VisitorSourceURL 
VisitorMoneyLine 
VisitorMoneylineChange 
VisitorVegasPoints 

次のコード:

import csv 
import requests 
import os 

outfile = open("Labs_StartingGoalies.csv","a",newline='') 
writer = csv.writer(outfile) 
header=[ 
    "Home_Tm"] 

writer.writerow(header) 

req = requests.get('https://www.fantasylabs.com/api/lines/4/12-20-2017/startinggoalies') 
data = req.json()['GoalieMatchups'] 

for i, teams in enumerate(data): 
    for i, team in enumerate(teams['Properties']): 
     HomeTeam = team['HomeTeam'] 
     print (HomeTeam) 

エラー: File "C:/Python36/Projects/NHL/Labs_Teams.py", line 17, in <module> HomeTeam = team['HomeTeam'] TypeError: string indices must be integers

このJsonは読みにくいです。通常はMozillaを使用しますが、通常の方法では表示されません。私は最初のoutputのリストからデータを取り出すことを始めたいと思いますが、異なる試みはすべて不足しています。見ていただきありがとうございます!ループは以下のように変更する必要があるため

+1

あなたは文字列のことが起こるのプロパティのdictのキーの上に列挙されているように見えます。 –

答えて

2

ザ・、

for i, teams in enumerate(data): 
    HomeTeam = teams['Properties']['HomeTeam'] 
    print (HomeTeam) 

この意志出力

Columbus Blue Jackets 
Philadelphia Flyers 
Calgary Flames 

teams['Properties']辞書、ないリストであるので、あなたは内側のループを必要としません。

編集:あなたはカウンターを使用していないため、また、あなたはすでにリスト

for teams in data: 
    HomeTeam = teams['Properties']['HomeTeam'] 
    print (HomeTeam) 
0

あなたが列挙使う理由があるとする、データを列挙する必要はありませんか? あなたは、おそらくこのような何かをしたい:

for teams in data: 
    HomeTeam = teams['Properties']['HomeTeam'] 
    print (HomeTeam) 

結果:

Columbus Blue Jackets 
Philadelphia Flyers 
Calgary Flames 
+0

申し訳ありませんが、誰かがすでに回答していることを確認していません – ekristina

関連する問題