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

无需Selenium实现aspx页面分页数据与详情抓取的方法

问题解答

问题原因

你遇到的driver.back()返回第一页的问题是站点特性导致的:该站点使用ASP.NET WebForm技术开发,分页状态存在页面的隐藏字段ViewState中,跳转详情页后回退时浏览器不会保留之前操作生成的动态状态,因此会回到初始的第一页,每次重新翻页自然耗时极长。

方案1:直接用Requests + BeautifulSoup实现采集(推荐,效率最高)

完全可以不用Selenium,直接模拟HTTP请求采集,速度比模拟浏览器操作快10倍以上,操作步骤如下:

  • 抓包获取分页请求、详情请求的POST参数:打开浏览器F12控制台的「网络」标签,点击分页、点击详情按钮时,对应请求的Form Data里会包含__VIEWSTATE、__EVENTTARGET、分页参数、详情记录ID等固定字段
  • 每次请求携带对应参数向站点地址发POST请求,拿到返回的HTML内容
  • 用BeautifulSoup解析列表页HTML拿到当前页所有记录的详情ID,再逐个请求详情页解析字段即可,完全不需要页面渲染、等待、回退的操作

方案2:Selenium方案优化(不想改整体逻辑可以用)

如果要保留现有Selenium逻辑不需要重写,只要修改跳转详情的操作就能解决回退重置的问题:点击详情时让页面在新标签页打开,采集完直接关闭详情标签页切回列表页即可,列表页的分页状态会完整保留,不需要重新跳转分页,核心操作示例代码如下:

# 按住Ctrl点击详情,在新标签页打开
ActionChains(driver).key_down(Keys.CONTROL).click(detail_list[curr]).key_up(Keys.CONTROL).perform()
# 切换到新打开的详情标签页
driver.switch_to.window(driver.window_handles[-1])

# 原有采集详情的逻辑保留...

# 采集完关闭当前详情标签页
driver.close()
# 切回原来的列表标签页,分页状态不会丢失
driver.switch_to.window(driver.window_handles[0])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:18:01