繁体   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