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

如何解决带登录弹窗的网站爬取时requests.Session登录无效、翻页仅返回首页的问题

核心问题定位
  • 登录请求目标地址错误:你将登录POST请求发送到了公开列表页https://securities.stanford.edu/filings.html,该路径并不承载登录提交逻辑,服务器从未完成你的账号校验,会话没有绑定有效登录态。
  • 分页逻辑完全不匹配网站规则:你拼接的filings.html?page=X并非网站实际的分页路由,无论传入多少页号参数,服务器都会默认返回第一页的公开内容,这是所有分页返回结果重复的核心原因。
  • 登录校验机制缺失:网站的登录请求通常携带动态CSRF校验字段,若未先从页面获取该字段值随登录表单一同提交,就算找对了登录接口也会被防护机制拦截。
分步修复操作
  1. 定位真实登录接口
    打开浏览器开发者工具的Network面板,手动在网站弹窗完成一次真实登录流程,抓取登录动作触发的POST请求实际地址、携带的全部表单字段,替换代码中原先错误的POST目标地址。
    抓取时重点确认请求中是否存在动态生成的校验字段:这类字段需要先通过GET请求访问弹窗对应的页面,从HTML源码中提取取值,和用户名、密码一并放入POST请求的data参数中提交。
  2. 适配真实分页规则
    同样在Network面板手动点击各分页页码,抓取分页动作实际触发的请求:
    • 若分页是POST请求,按实际参数格式传入对应页码值,不要硬拼URL查询参数;
    • 若分页是前端异步加载的接口,直接请求该异步接口地址传入页码参数,不要直接爬静态列表页。
  3. 校验会话登录有效性
    登录请求发送完成后,单独请求一个需要登录权限的页面,通过返回内容确认是否拿到了登录态:比如检查返回的cookies中是否存在有效会话标识、页面是否显示已登录的账号信息,确认会话绑定成功后再启动分页爬取流程。
    你现有代码中requests.Session复用请求上下文的逻辑是正确的,只要保证所有登录、爬取请求挂载在同一个会话对象下发起,cookies会自动携带,无需手动处理会话标识。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 22:15:06