[英]Iterating over paginated data with an unknown number of pages with Python requests
我正在尝试从使用分页的 URL 中获取数据。 我使用以下有效负载获取分页数据:
payload = {
'Pageno': '7',
'strCat': '-1',
'strPrevDate': '20220122',
'strScrip': '',
'strSearch': 'P',
'strToDate': '20220122',
'strType': 'C'}
我不知道那里有多少页。 我想一个一个地拿它们,直到我最终得到一个不存在的页面。 提取数据的代码如下:
jsonData = requests.get(url, headers=headers, params=payload).json()
如何确保我提出此请求以存在 URL 为条件?
URL 是:
url = 'https://api.bseindia.com/BseIndiaAPI/api/AnnGetData/w'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}
对于 Pageno 的任何正值,BSE 的Pageno
将返回 200 OK,即使您已经读过了数据的末尾。 您应该遍历每一页,然后在遇到空列表(这表明您已到达数据末尾)时中断。
import requests
payload = {
'Pageno': 1,
'strCat': '-1',
'strPrevDate': '20220122',
'strScrip': '',
'strSearch': 'P',
'strToDate': '20220122',
'strType': 'C'
}
url = 'https://api.bseindia.com/BseIndiaAPI/api/AnnGetData/w'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}
data = []
should_fetch_next_page = True
while should_fetch_next_page:
print(f"Fetching page {payload['Pageno']} ...")
jsonData = requests.get(url, headers=headers, params=payload).json()
if jsonData["Table"]:
data.extend(jsonData["Table"])
payload['Pageno'] += 1
else:
should_fetch_next_page = False
print(data)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.