簡體   English   中英

在 Python 結束 API 分頁循環

[英]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.

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