简体   繁体   English

API 的迭代循环无法正常工作

[英]The iteration loop is not working properly for API

There is an API that only produces one hundred results per page.有一个 API 每页只产生一百个结果。 I am trying to make a while loop so that it goes through all pages and takes results from all pages, but it does not work properly.我正在尝试制作一个while循环,以便它遍历所有页面并从所有页面获取结果,但它无法正常工作。

This script goes through the pages:此脚本遍历页面:

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

At startup:启动时:

params
{'area': 1,
 'no_magic': 'false',
 'order_by': 'salary_desc',
 'page': 5,
 'per_page': 100,
 'period': 30,
 'search_field': 'name',
 'text': '"python"'}

He sees five pages.他看了五页。

When I look at the variable after execution:当我在执行后查看变量时:

len(pages)
4

He only sees four pages.他只看到四页。

If I understood correctly, he does not see the zero page (pages in the api start at zero).如果我理解正确,他看不到零页面(api 中的页面从零开始)。

Please tell me how you can fix this error?请告诉我如何解决此错误?

Complete script in colab at this link https://colab.research.google.com/drive/14KddVLTyH3LkcE-LmHm7EooTYMM7b0zB?usp=sharing colab 中的完整脚本在此链接https://colab.research.google.com/drive/14KddVLTyH3LkcE-LmHm7EooTYMM7b0zB?usp=sharing

You are incrementing the page prior to grabbing the response.在获取响应之前,您正在增加页面。 Just reorder like so.像这样重新排序。

while True:
  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
  params["page"] += 1

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM