簡體   English   中英

Python在while循環中將json附加到json文件

[英]Python append json to json file in a while loop

我正在嘗試使用Python Requests庫從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 = r.links['next'].get('url')
r2 = requests.get(next_url, headers=headers)
users2 = r2.json()

由於我還不知道有多少頁,如何在一個while循環中盡可能快地將第二,第三...頁依次追加到“ 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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM