我正在处理一个项目,我想从一个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