You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何构造循环实现API多页请求遍历 拼接追加各页返回数据

多页爬取实现方案

核心实现逻辑分4步:

  1. 初始化空列表存储所有页面的汇总结果
  2. 构造页码循环,每次请求前动态修改payload中的page参数为当前页码
  3. 每次请求拿到响应后解析数据,追加到总结果列表
  4. 增加空页判断逻辑,遇到无数据的页面直接终止循环,避免发送无效请求,同时加合理请求间隔避免触发接口频率限制

完整可运行代码

import requests
import time

# 接口基础配置
url = "https://indeed11.p.rapidapi.com/"
headers = {
    "content-type": "application/json",
    "X-RapidAPI-Key": "{替换为你自己的API密钥}",
    "X-RapidAPI-Host": "indeed11.p.rapidapi.com"
}

# 搜索配置
max_page = 10  # 自定义要爬取的最大页数,可根据实际需求调整
search_keyword = "data visualization"
search_location = "New York City, NY"

all_jobs = []  # 存储全量职位数据

for current_page in range(1, max_page + 1):
    # 动态构造当前页的请求参数
    payload = {
        "search_terms": search_keyword,
        "location": search_location,
        "page": current_page,
        "fetch_full_text": "yes"
    }
    
    # 发送请求
    response = requests.request("POST", url, json=payload, headers=headers)
    # 解析响应为JSON格式,注意根据实际返回结构调整取值路径
    page_data = response.json()
    
    # 空页判断:如果当前页无职位数据,直接终止循环
    if not page_data:
        print(f"第{current_page}页无数据,爬取终止")
        break
    
    # 将当前页数据追加到总结果中
    # 如果返回结构是嵌套的,比如职位列表在data字段下,就改成all_jobs.extend(page_data['data'])
    all_jobs.extend(page_data)
    print(f"第{current_page}页爬取完成,累计获取{len(all_jobs)}条职位数据")
    
    # 加1秒请求间隔,避免触发频率限制
    time.sleep(1)

# 最终all_jobs就是所有页面拼接完成的全量职位数据
print(f"爬取结束,共获取{len(all_jobs)}条有效职位数据")

注意事项

  • 代码中X-RapidAPI-Key字段需要替换为你自己在RapidAPI平台申请的有效密钥,否则接口会返回鉴权失败
  • 首次运行建议先把max_page设为1,打印page_data确认接口返回的结构,如果职位数据是嵌套在某个字段下(比如常见的data、jobs字段),需要调整追加数据时的取值路径
  • 请求间隔可根据你自己的API套餐配额调整,如果是付费高配额套餐可以适当缩短间隔,免费套餐建议保持1秒以上间隔避免被临时封禁
  • 如果接口返回结果中包含总结果数/总页数字段,可以不用硬编码max_page,直接取返回的总页数作为循环终止条件即可

内容的提问来源于stack exchange,提问作者SteadyGrow99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 01:15:28