Python在while循环中将json附加到json文件中
我正在尝试使用Python请求库从GithubAPI获取所有用户信息。这是我的密码:Python在while循环中将json附加到json文件中,python,json,python-requests,github-api,writefile,Python,Json,Python Requests,Github Api,Writefile,我正在尝试使用Python请求库从GithubAPI获取所有用户信息。这是我的密码: import requests import json url = 'https://api.github.com/users' token = "my_token" headers = {'Authorization': 'token %s' % token} r = requests.get(url, headers=headers) users = r.json() with open('users.
import requests
import json
url = 'https://api.github.com/users'
token = "my_token"
headers = {'Authorization': 'token %s' % token}
r = requests.get(url, headers=headers)
users = r.json()
with open('users.json', 'w') as outfile:
json.dump(users, outfile)
现在我可以将用户的第一页转储到json文件中。我还可以找到“下一页”的url:
next_url = r.links['next'].get('url')
r2 = requests.get(next_url, headers=headers)
users2 = r2.json()
既然我还不知道有多少页,我怎么能加上第2页,第3页。。。在while循环中以尽可能快的速度将页面按顺序转到“users.json”
谢谢 将从
请求
查询中获得的数据附加到一个列表中,然后转到下一个查询
一旦获得了所需的所有数据,然后继续尝试将数据连接到文件或对象中。您也可以使用
线程
并行执行多个查询,但很可能api上会有速率限制。首先,您需要以“a”模式打开文件,否则子序列写入将覆盖所有内容
import requests
import json
url = 'https://api.github.com/users'
token = "my_token"
headers = {'Authorization': 'token %s' % token}
outfile = open('users.json', 'a')
while True:
r = requests.get(url, headers=headers)
users = r.json()
json.dump(users, outfile)
url = r.links['next'].get('url')
# I don't know what Github return in case there is no more users, so you need to double check by yourself
if url == '':
break
outfile.close()
谢谢你的回答。我只能用工作代码标记一个。你的推荐绝对正确。非常感谢!GitHub API的速率限制为5000个请求/小时。按照您的回答,在上一次运行被限制停止后,如何在新运行中继续写入文件?您应该在每个请求后添加
time.sleep(1)