我正在處理一個項目,我想從一個API(Strava)拉長數據列表並將它們放入MySQL數據庫中(未在代碼中顯示)。 API有一些限制,它們不允許每個請求拉超過200條記錄。因此,我需要找到一種方法來遍歷結果,但是在到達列表的末尾時停止(不管有多少頁面,它都不會返回完全空的,也不會出錯)。用循環遍歷Python,直到到達列表的末尾
因此,我定義了一個從API中提取數據的函數,並且JSON輸出中的第一個鍵是與列表中條目數相等的effort_count。我嘗試使用我構建的循環中的函數使用該數字來使用該函數遍歷列表。
import urllib2
import json
strava_api='xxxxxxx'
def strava(segment_id,page,per_page):
access_token = strava_api
url='https://www.strava.com/api/v3/segments/' + str(segment_id) +'/leaderboard' +'?&access_token=' + access_token
final_url=url + "&page=" + str(page) + "&per_page=" + str(per_page)
json_obj=urllib2.urlopen(final_url)
data = json.load(json_obj)
effort_count=data['effort_count']
counter = 1
max_page = effort_count/200+1
for counter in range (1,max_page):
strava(894142,counter,200) # 894142 is an existing segment and 200 is the max number of records displayed
counter = counter + 1
但是,當我運行這個時,我得到'effort_count'未定義的錯誤。這是因爲在這個循環中不可能使用函數中的變量嗎?有沒有解決方法?
ps我在編碼方面很新穎,所以很可能我完全採用錯誤的方法。
這是因爲函數中定義的變量對於該函數是局部的。 – sytech
efforts_count是本地到strava函數.. – ArunDhaJ