簡體   English   中英

使用python請求獲取所有頁面

[英]Fetch all pages using python request

我正在使用 api 從網站獲取訂單。 問題是它一次只能獲取 20 個訂單。 我發現我需要使用分頁迭代器,但不知道如何使用它。 如何一次獲取所有訂單。

我的代碼:

def search_orders(self):
    headers = {'Authorization':'Bearer %s' % self.token,'Content-Type':'application/json',}
    url = "https://api.flipkart.net/sellers/orders/search"
    filter = {"filter": {"states": ["APPROVED","PACKED"],},}
    return requests.post(url, data=json.dumps(filter), headers=headers)

這是文檔的鏈接。

文檔

您需要執行文檔建議的內容 -

第一次調用Search API會根據pageSize值返回有限數量的結果。 調用響應的nextPageURL字段中返回的URL將獲取搜索結果的后續頁面。

nextPageUrl - String - 對此URL的GET調用將獲取下一頁結果。 最后一頁不存在

(強調我的)

您可以使用response.json()來獲取響應的json。 然后你可以檢查標志 - hasMore - 看看是否還有更多,如果是,請使用requests.get()來獲取下一頁的響應,並繼續這樣做直到hasMore為false。 示例 -

def search_orders(self):
    headers = {'Authorization':'Bearer %s' % self.token,'Content-Type':'application/json',}
    url = "https://api.flipkart.net/sellers/orders/search"
    filter = {"filter": {"states": ["APPROVED","PACKED"],},}
    s = requests.Session()
    response = s.post(url, data=json.dumps(filter), headers=headers)
    orderList = []
    resp_json = response.json()
    orderList.append(resp_json["orderItems"])
    while resp_json.get('hasMore') == True:
        response = s.get('"https://api.flipkart.net/sellers{0}'.format(resp_json['nextPageUrl']))
        resp_json = response.json()
        orderList.append(resp_json["orderItems"])
    return orderList

上面的代碼應該返回完整的訂單列表。

暫無
暫無

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

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