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

Selenium按钮点击失效问题排查(Python Web自动化)

问题描述

我正在开展政治献金相关研究,需要从FEC的支出数据页面获取数据。操作流程是点击页面上的"Export"按钮,再点击弹出的"Download"按钮。我的代码最初能正常运行几次,但之后随机失效,期间未修改代码。

以下是我的代码片段:

link = f'https://www.fec.gov/data/disbursements/?committee_id={committee_id}&two_year_transaction_period=2024&data_type=processed'
driver.get(link)
        
# click export button
export = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, ".js-export.button.button--cta.button--export")))
print(f"Found: {export.tag_name} - {export.text}")
current_time = time.strftime("%Y-%m-%dT%H_%M_%S", time.localtime())
driver.execute_script("arguments[0].click()", export)
time.sleep(10)     

程序总能定位到按钮,但约3次尝试后就无法成功点击,请问网站会拦截Python Selenium的Web自动化及按钮点击操作吗?

分析与解决建议

是的,这类政府数据网站普遍配备反自动化机制,你的情况大概率是触发了网站的反爬策略——即使能定位到元素,点击操作也会被后台拦截。

可以尝试这些优化方案:

  • 改用原生点击并模拟真实操作节奏:替换execute_script点击为Selenium原生的export.click(),操作前加入随机短等待(比如import random; time.sleep(random.uniform(1,3))),避免机械性操作被识别。
  • 伪装浏览器指纹:使用undetected-chromedriver替代普通ChromeDriver,它能自动隐藏webdriver特征,绕过常见的反爬检测。
  • 降低请求频率:延长每次操作后的等待时间,或设置固定的请求间隔,避免短时间内频繁访问触发拦截阈值。
  • 检查是否出现验证码:失效时手动打开对应页面,确认是否弹出验证码。若有,需添加验证码处理逻辑(如对接打码平台或手动验证)。
  • 优先使用官方API:FEC提供官方数据API,直接调用API获取数据比模拟点击下载更稳定合规,完全规避反爬问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 20:13:15