【发布时间】:2021-03-29 05:00:53
【问题描述】:
有一个 API 每页只能产生 100 个结果。我正在尝试创建一个 while 循环,以便它遍历所有页面并从所有页面获取结果,但它无法正常工作。
此脚本遍历页面:
params = dict(
order_by='salary_desc',
text=keyword,
area=area,
period=30, # days
per_page=100,
page = 0,
no_magic='false', # disable magic
search_field='name' # available: name, description, company_name
)
pages = []
while True:
params["page"] += 1
response = requests.get(BASE_URL + '/vacancies', headers={'User-Agent': generate_user_agent()}, params=params,)
items = response.json()['items']
if not items:
break
pages.append(items) # Do it for each page
response
启动时:
params
{'area': 1,
'no_magic': 'false',
'order_by': 'salary_desc',
'page': 5,
'per_page': 100,
'period': 30,
'search_field': 'name',
'text': '"python"'}
他看了五页。
当我在执行后查看变量时:
len(pages)
4
他只看到四页。
如果我理解正确,他看不到零页面(api 中的页面从零开始)。
请告诉我如何解决这个错误?
colab 中的完整脚本在此链接https://colab.research.google.com/drive/14KddVLTyH3LkcE-LmHm7EooTYMM7b0zB?usp=sharing
【问题讨论】:
-
代码在获取之前增加页面,因此您永远不会在第 0 页上进行获取。
-
感谢您的回答,但我不明白如何解决此问题,以便页面从零开始。
-
将页面增量移动到 for 循环的底部,而不是顶部。
-
我认为你错了。调用 params 变量时,它将输出正确的五页数。但是当我们用完成的结果页面查看变量时,它会产生四个页面。我认为这里有一个逻辑错误,但我不明白他为什么只添加了五页中的四页。
-
页面从零开始,并在发出请求之前递增到 1,因此永远不会获取页面 0。我不知道如何更简单地解释这个问题。
标签: python api iterator iteration