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

爬取onclick按钮触发的detailTable数据是否只能用Selenium

爬取方案结论

不需要强制使用Selenium,完全可以通过Requests+BeautifulSoup组合实现该场景的爬取需求,效率比模拟浏览器方案高很多。

具体实现思路
  • 先定位真实接口的参数规律,不要被URL无规律的表象误导:
    打开浏览器开发者工具的Network面板,清空所有请求记录后再点击橙色按钮,精准定位到加载detailTable内容的那条POST请求,重点核对三类信息:
    • 请求头(Request Headers):重点关注Referer、Cookie、跨域校验头、CSRF令牌类参数,这类参数大多能在首次访问列表页的响应里拿到
    • 请求体(Form Data/Request Payload):逐个核对参数来源——绑定onclick事件的按钮,一般会把请求需要的条目ID、分页参数直接写在按钮的data-*自定义属性、或者onclick调用的函数传参里,不存在真正无规律的参数
    • 响应内容:如果接口直接返回detailTable的HTML片段,拿到响应后可以直接交给BeautifulSoup解析;如果返回JSON格式数据,提取对应字段后再解析即可
  • 搭请求逻辑的时候用requests.Session()维持会话一致性:
    1. 首先用Session发起GET请求访问初始列表页,拿到初始HTML后用BeautifulSoup解析,提取所有橙色按钮携带的请求参数、页面内嵌的校验token,同时自动保留服务端返回的Cookie
    2. 按照浏览器抓包拿到的格式拼接POST请求参数,带上和浏览器一致的请求头(异步加载接口一般要求携带X-Requested-With: XMLHttpRequest标识,标识这是AJAX请求,否则容易被拦截)
    3. 直接向接口地址发POST请求,就能拿到detailTable的完整内容,不需要模拟真实点击操作。
注意事项
  • 如果发现请求里带疑似加密的参数,直接在开发者工具的Sources面板里搜索onclick绑定的JS函数,顺着函数逻辑找加密规则即可,该站点这类面向普通用户的公开数据接口,前端加密逻辑一般不会做高强度混淆,逆向成本很低
  • 如果排查后发现接口确实有无法复现的参数校验,再考虑用Selenium做兜底,绝大多数情况下直接抓POST接口的方案都能跑通,爬取效率远高于模拟浏览器。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 03:48:28