现在很多请求都会返回页面 token ,我很好奇处理它们的最合适的方法是什么?
我通常只是使用递归:
def get_followers(user_id,
access_token,
cursor=''):
url = 'https://api.instagram.com/v1/users/%s/followed-by?access_token=%s&cursor=%s' % (my_user,
access_token,
cursor)
print(url)
response = requests.get(url)
json_out = json.loads(response.text)
for user in json_out['data']:
usrname = user['username']
my_followers.add_follower(usrname)
print("Added: %s" % usrname)
try:
cursor = json_out['pagination']['next_url']
get_followers(user_id, access_token, cursor)
except KeyError:
print("Finished with %d followers" % len(my_followers.followers))
return
但是,也许:
while True:
..
if condition:
break
或者其他一些实现被认为更高效/Pythonic?
最佳答案
您可以将其更改为 generator访问结构时产生
下一个追随者的函数,仅在必要时获取更多数据。
def get_followers(...)
...
while token is not None:
# fetch data
...
for user in json_out['data']:
yield user
...
# fetch new token
然后,迭代此生成器以应用数据处理。这还具有分离数据采集和处理逻辑的优点。
followers = get_followers(...)
for user in followers:
username = user['username']
my_followers.add_follower(username)
print("Added: %s" % username)
关于使用下一页 token 的 Pythonic 方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34630218/