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

Python Requests 无法通过GET请求翻页获取目标网站数据问题

解决翻页参数被忽略的问题

针对你遇到的请求带翻页参数却始终返回第一页的问题,大概率是以下原因导致的,对应解决方案如下:

1. 未维护会话状态

这类政务/企业透明化网站通常依赖Session跟踪用户的搜索会话,直接用requests.get()发送请求相当于每次都是新会话,服务器无法识别你是在已有搜索基础上翻页,因此会返回初始页。

解决办法:用requests.Session()创建会话对象,先访问初始页面(或触发一次搜索请求),再用同一个会话发送翻页请求,保持会话一致性。

2. 参数格式不匹配

HTTP请求参数均为字符串类型,你代码里的validate: True和pesquisar: True会被requests转成大写的True,但服务器可能期望小写的"true",这会导致参数不被识别。

另外要确保翻页参数和网页实际发送的完全一致,建议打开浏览器开发者工具(F12),切换到Network标签,点击翻页按钮,查看真实请求的参数,核对参数名称和值的格式。

3. 需先触发搜索动作

可能直接请求翻页参数无效,得先模拟第一次搜索的提交请求,让服务器在会话中记录你的搜索条件,后续翻页请求才会基于这个条件返回对应页面的数据。

修改后的代码示例

import requests

# 创建会话对象,维持会话状态
session = requests.Session()

# 先访问初始页面,建立会话Cookie
base_url = "https://portaltransparencia.procempa.com.br/portalTransparencia/despesaLancamentoPesquisa.do"
initial_params = {
    "viaMenu": "true",
    "entidade": "PROCEMPA"
}
session.get(base_url, params=initial_params)

# 构造翻页请求参数,所有值用字符串格式
page_params = {
    "perform": "view",
    "actionForward": "success",
    "validate": "true",
    "pesquisar": "true",
    "defaultSearch.pageSize": "23",
    "defaultSearch.currentPage": "2",
    "viaMenu": "true",
    "entidade": "PROCEMPA"
}

# 用同一个会话发送翻页请求
page = session.get(base_url, params=page_params)

# 验证是否获取到第二页数据
print(page.text)

额外排查建议

  • 打开浏览器开发者工具,对比你的请求和浏览器真实翻页请求的完整URL、Cookie、请求头,确保所有参数和头信息一致(比如User-Agent,部分网站会校验这个字段)。
  • 如果还是无效,检查翻页按钮是否通过POST请求提交——有些网站表面看起来是GET翻页,实际用POST处理,这时候需要改成session.post()并调整参数位置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 11:37:17