Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Python3&;插入API分页;请求?_Python_Python 3.x_Pagination_Python Requests - Fatal编程技术网

如何使用Python3&;插入API分页;请求?

如何使用Python3&;插入API分页;请求?,python,python-3.x,pagination,python-requests,Python,Python 3.x,Pagination,Python Requests,我使用请求进行API调用,并得到JSON响应。API限制为每页20个结果。我可以毫无问题地访问第一页,但是我不知道如何在查询中包含分页。在页面底部的JSON响应中,它提供了以下信息 }, "_links":{ "first":{ "href":"https://search-lastSale?date=20190723-20190823&page=0&size=20 }, "last":{ "href":"https://search-lastSal

我使用请求进行API调用,并得到JSON响应。API限制为每页20个结果。我可以毫无问题地访问第一页,但是我不知道如何在查询中包含分页。在页面底部的JSON响应中,它提供了以下信息

 },
"_links":{
  "first":{
    "href":"https://search-lastSale?date=20190723-20190823&page=0&size=20
  },
  "last":{
    "href":"https://search-lastSale?date=20190723-20190823&page=4&size=20
  },
  "next":{
    "href":"https://search-lastSale?date=20190723-20190823&page=1&size=20
  },
  "self":{
    "href":"https://search-lastSale?date=20190723-20190823&page=0&size=20
  }
},
"page":{
  "number":0,
  "size":20,
  "totalElements":77,
  "totalPages":4
}
我已经阅读了网站上的文档以及其他各种文章和帖子,但每件事似乎都非常特定于人们自己的API

我已经将我的代码恢复到一个URL请求,以及旧的auth令牌,以便我能够掌握它,然后重新缩放到现有的项目。代码如下:

url = "https://search-api.corelogic.asia/search/au/property/postcode/401249/lastSale"

querystring = {"page":"0","size":"20","date":"20190723-20190823"}

headers = {
    'Content-Type': "application/JSON",
    'Authorization': "My Token"}

response = requests.request("GET", url, headers=headers, params=querystring)

print(response.text)
据我从文件和阅读中了解,我应该做的是:

  • 返回一个JSON响应,找到页面计数,然后发送一个新请求,其中包含一个自定义URL列表,该URL以某种方式引用该计数,即

    if 'totalPages = [4]
        https:www.search/page0
        https:www.search/page1
        https:www.search/page2
        https:www.search/page3
        https:www.search/page4
    
    循环遍历每个URL并附加JSON文件;或

  • 利用JSON响应中的“下一页”获取下一个url,直到JSON文件中没有“下一页”,即

    While json.response = ['next']
        keep getting data
        append to open json file
    

  • 这两种方法都有意义,但是我看不出这种分页在代码中的位置

    如您所见,在您收到的响应中有
    \u链接
    dict
    ,您可以使用
    href
    内的
    下一页

    或者,您可以尝试手动生成这些URL:

    >>> def paged_url(page: int=0, size=20) -> str:
    ...     return ("https://search-lastSale?date=20190723-20190823&"
    ...             f"page={page}&size={size}")
    ... 
    >>> paged_url(1)
    'https://search-lastSale?date=20190723-20190823&page=1&size=20'
    >>> paged_url(2)
    'https://search-lastSale?date=20190723-20190823&page=2&size=20'
    >>> paged_url(3, 10)
    'https://search-lastSale?date=20190723-20190823&page=3&size=10'
    

    这些URL包含您应该获取的下一页。

    是的,您一直在调用“下一页”链接。现在还不清楚你说的“where”是什么意思。嗨@jornsharpe-谢谢你的问题编辑,我想我没有意识到键盘上有多少挫折感!。关于“where”-我似乎找不到任何添加代码的方法。例如:目前,我正在尝试在响应时使用以下代码。链接[“下一步”]!=response.links[“last”]:r=requests.get(r.links[“next”],headers=headers,params=querystring)raw=r.json(),用于raw:results.append(i)中的i作为一个片段-我得到下面的错误键error:“next”,然后在问题中添加一个。但错误信息很清楚:在某一点上,没有“下一个”链接。