请求-POST分页?

时间:2018-09-26 18:05:57

标签: python api pagination python-requests

我想获得以下交易: https://www.omniexplorer.info/address/1FoWyxwPXuj4C6abqwhjDWdz6D4PZgYRjA

首页没问题:

import requests

headers = {
    'Content-Type': 'application/x-www-form-urlencoded',
}

data = [('addr', '1FoWyxwPXuj4C6abqwhjDWdz6D4PZgYRjA')]

response = requests.post('https://api.omniexplorer.info/v1/address/addr/details/', headers=headers, data=data)

response = response.json()

print(response["transactions"])

但是我该如何呼叫第2页?

我尝试使用参数“ params = {'page':2}”,但这不起作用

不胜感激!

致谢

2 个答案:

答案 0 :(得分:1)

您应该认为它可能是RESTful的,那么您将知道该怎么做

import requests

headers = {
    'Content-Type': 'application/x-www-form-urlencoded'
}
pj = {}

for page in range(1,3):
    data = [('addr', '1FoWyxwPXuj4C6abqwhjDWdz6D4PZgYRjA'),('page',page)]
    response = requests.post('https://api.omniexplorer.info/v1/address/addr/details/', headers=headers , data = data)
    response = response.json()
    print(response)
    pj[page] = response["transactions"]
value = list(pj.values())
print(value[0] == value[1])

答案 1 :(得分:1)

对于您使用的API,您应该将页码发送为表单值:

curl -X POST -H "Content-Type: application/x-www-form-urlencoded" -d "page=19" "https://api.omniexplorer.info/v1/properties/gethistory/3"

如果将page = 19替换为page = 20,您将看到第二个呼叫只有三个条目,而第一个只有十个条目。

使用请求,应该像这样:

r = requests.post('https://api.omniexplorer.info/v1/properties/gethistory/3',
                  data={'page': 10})

或者,使用您自己的示例,而不是我在其页面上找到的示例:

import requests

headers = {
    'Content-Type': 'application/x-www-form-urlencoded',
}

data = {
    'addr': '1FoWyxwPXuj4C6abqwhjDWdz6D4PZgYRjA',
    'page': 1,
}

response = requests.post('https://api.omniexplorer.info/v1/address/addr/details/',
                         headers=headers, data=data)