[英]Python loop through Url Range
下面的腳本應轉到3個不同的頁面,並將所有這三個頁面都寫入csv。 但是,它只寫最后一頁。 如果我print(my_data)
它也只打印最后一頁。 告訴我的不是錯誤的csv寫入,而是在for i in range(41244,41246)
。
這是我的代碼:
import base64
import requests
import json
import csv
USERNAME, PASSWORD = 'admin', 'admin'
for i in range(41244,41246):
req = requests.get(
url="https://api.mysportsfeeds.com/v1.1/pull/nhl/2017-2018-regular/game_startinglineup.json?gameid=" + str(i)
,
headers={
"Authorization": "Basic " +
base64.b64encode('{}:{}'.format(USERNAME,PASSWORD)\
.encode('utf-8')).decode('ascii')
}
)
req.raise_for_status()
data = req.json()
my_data =[]
for i in range(2):
EX_team_home = data['gamestartinglineup']['teamLineup'][i]['expected']['starter']
for i in range(1):
EX_team_away = data['gamestartinglineup']['teamLineup'][i]['expected']['starter']
for i in range(20):
EX_homepos = EX_team_home[i]['position']
EX_awaypos = EX_team_away[i]['position']
EX_homename = EX_team_home[i]['player']['LastName']
EX_awayname = EX_team_away[i]['player']['LastName']
my_data.append([EX_homepos, EX_homename, EX_awaypos, EX_awayname])
print(my_data)
header = ["EX_homepos", "EX_homename", "EX_awaypos", "EX_awayname"]
with open("TESTLINE3.csv", 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(header)
writer.writerows(my_data)
f.close()
EX_homepos EX_homename EX_awaypos EX_awayname Goalie-Backup Hutton Goalie-Backup Budaj ForwardLine1-RW Sobotka ForwardLine1-RW Kucherov ForwardLine2-C Schenn ForwardLine2-C Johnson ForwardLine4-C Brodziak ForwardLine4-C Bournival ForwardLine3-LW Paajarvi ForwardLine3-LW Palat ForwardLine4-RW Thorburn ForwardLine4-RW Paquette ForwardLine3-C Sundqvist ForwardLine3-C Point ForwardLine3-RW Thompson ForwardLine3-RW Gourde ForwardLine1-C Stastny ForwardLine1-C Stamkos ForwardLine1-LW Tarasenko ForwardLine1-LW Namestnikov ForwardLine2-LW Schwartz ForwardLine2-LW Killorn ForwardLine4-LW Upshall ForwardLine4-LW Kunitz DefensePair3-L Bortuzzo DefensePair3-L Sustr DefensePair1-L Edmundson DefensePair1-L Girardi DefensePair2-R Parayko DefensePair2-R Sergachev DefensePair3-R Dunn DefensePair3-R Coburn ForwardLine2-RW Jaskin ForwardLine2-RW Callahan DefensePair1-R Pietrangelo DefensePair1-R Hedman DefensePair2-L Gunnarsson DefensePair2-L Stralman Goalie-Starter Allen Goalie-Starter Vasilevskiy
應該還會有另外2個陣容出現,但是我要么寫滿了它們,要么我的范圍不起作用。 沒有發生錯誤,只是沒有達到預期的結果。
建議后編輯:
import base64
import requests
import json
import csv
USERNAME, PASSWORD = 'Name', 'Pass'
header = ["Update", "EX_homepos", "EX_homename", "EX_awaypos", "EX_awayname"]
headers={
"Authorization": "Basic " +
base64.b64encode('{}:{}'.format(USERNAME,PASSWORD)\
.encode('utf-8')).decode('ascii')
}
with open("TESTNNEW2.csv", 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(header)
for i in range(41244,41246):
req = requests.get(url="https://api.mysportsfeeds.com/v1.1/pull/nhl/2017-2018-regular/game_startinglineup.json?gameid=" + str(i) , headers=headers)
req.raise_for_status()
data = req.json()
my_data =[]
for i in data:
Update = data['gamestartinglineup']['lastUpdatedOn']
for i in range(2):
EX_team_home = data['gamestartinglineup']['teamLineup'][i]['expected']['starter']
for i in range(1):
EX_team_away = data['gamestartinglineup']['teamLineup'][i]['expected']['starter']
for i in range(20):
EX_homepos = EX_team_home[i]['position']
EX_awaypos = EX_team_away[i]['position']
EX_homename = EX_team_home[i]['player']['LastName']
EX_awayname = EX_team_away[i]['player']['LastName']
my_data.append([Update, EX_homepos, EX_homename, EX_awaypos, EX_awayname])
print(my_data)
writer.writerows(my_data)
您沒有通過將代碼縮進循環來忽略除最后一個請求之外的所有請求
但我建議您重寫代碼以首先打開CSV。 您可以提出一個請求,解析它,然后寫該行。 保留所有先前請求的數據列表沒有好處
例如
header = ["Updated", "EX_homepos", "EX_homename", "EX_awaypos", "EX_awayname"]
headers = {
"Authorization": "Basic " +
base64.b64encode('{}:{}'.format(USERNAME,PASSWORD)\
.encode('utf-8')).decode('ascii')
}
with open("TESTLINE3.csv", 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(header)
for gameid in range(41244,41247):
req = requests.get(url="https://api.mysportsfeeds.com/v1.1/pull/nhl/2017-2018-regular/game_startinglineup.json?gameid=" + str(gameid) , headers=headers)
req.raise_for_status()
data = req.json()
staring_lineup = data['gamestartinglineup']
update = staring_lineup['lastUpdatedOn']
team_away = staring_lineup['teamLineup'][0]['expected']['starter']
team_home = staring_lineup['teamLineup'][1]['expected']['starter']
for i in range(20):
home_player_name = team_home[i]['player']['LastName']
home_player_pos = team_home[i]['position']
away_player_name = team_away[i]['player']['LastName']
away_player_pos = team_away[i]['position']
writer.writerow([update, home_player_pos, home_player_name, away_player_pos, away_player_name])
而且當您使用with
來打開文件時,您不需要關閉文件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.