Python 在 while 循环中将 json 附加到 json 文件

Python append json to json file in a while loop

我正在尝试使用 Python 请求库从 GitHub API 获取所有用户信息。这是我的代码:

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 文件中。我还可以找到 'next' 页面的 url:

next_url = r.links['next'].get('url')
r2 = requests.get(next_url, headers=headers)
users2 = r2.json()

因为我还不知道有多少页,我怎样才能尽可能快地在 while 循环中按顺序将第 2、3... 页附加到 'users.json'?

谢谢!

将从 requests 查询中获取的数据附加到列表中,然后继续下一个查询。

获得所需的所有数据后,请继续尝试将数据连接到文件或对象中。您还可以使用 threading 并行执行多个查询,但很可能会对 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()