[英]End API Pagination Loop in Python
我正在嘗試構建一個 Python 腳本,在其中我通過 API 從 Chargebee 檢索所有發票。但是,我有點短,因為我不知道如何在循環到達最后一頁后正確結束循環。 我當前的解決方案包括在 URL 與最后一頁相同時插入一個中斷。 不幸的是,這不是很可持續,因為每次最后一個 next_offset 值更改時我都必須更新它。
我當前的代碼如下所示:
import requests
import json
import pandas as pd
from requests.auth import HTTPBasicAuth
from pandas import json_normalize
invoices = []
customers = []
def GetInvoices():
url = 'https://company.chargebee.com/api/v2/invoices?limit=100&offset='
url1 = 'https://company.chargebee.com/api/v2/invoices?limit=100&offset='
while url:
print('----')
print('Requesting', url)
response = requests.get(url, auth=HTTPBasicAuth('APIKEY','pass'))
data = response.json()
invoices.extend(data['list'])
if url == 'https://company.chargebee.com/api/v2/invoices?limit=100&offset=["1507705200000","78206775"]':
df = json_normalize(invoices)
df.to_csv('InvoicesUS.csv')
print('----')
print('Invoice list has been exported!')
break
else:
url = url1 + data['next_offset']
我對 Python 很陌生,所以腳本中可能有很多不必要的東西。 它正在工作,但我想找到一種方法來翻閱 API 並在附加最后一頁后關閉循環。
謝謝!
通過使用 try/except 找到了問題的解決方案。 代碼現在看起來像這樣:
import requests
import json
import pandas as pd
from requests.auth import HTTPBasicAuth
from pandas import json_normalize
invoices = []
url = 'https://company.chargebee.com/api/v2/invoices?limit=100&offset='
url1 = 'https://company.chargebee.com/api/v2/invoices?limit=100&offset='
while url:
try:
print('----')
print('Requesting', url)
response = requests.get(url, auth=HTTPBasicAuth('APIKEY','pass'))
data = response.json()
invoices.extend(data['list'])
url = url1 + data['next_offset']
except KeyError:
df = json_normalize(invoicesUS)
print('----')
print('Invoice list has been exported!')
break
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.