如何在Colaboratory中使用Selenium通过点击事件下载文件
Colab环境Selenium点击下载无文件问题解决方案
核心原因
Chrome无头模式默认禁用文件下载功能,仅配置prefs的下载路径不生效,且需要额外配置Colab沙箱环境下的下载权限。
完整可运行步骤
1. 安装依赖
!apt-get update !apt install chromium-chromedriver !cp /usr/lib/chromium-browser/chromedriver /usr/bin !pip install selenium
2. (可选)挂载Google Drive
如果需要将文件存入Google Drive,先运行挂载代码:
from google.colab import drive drive.mount('/content/drive')
3. 配置Selenium启动参数(核心修改点)
除原有参数外,需要新增Page.setDownloadBehavior规则手动允许下载,示例代码如下:
from selenium import webdriver from selenium.webdriver.common.by import By options = webdriver.ChromeOptions() options.add_argument('--headless') options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') # 配置默认下载路径 prefs = {'download.default_directory' : "/content"} options.add_experimental_option('prefs', prefs) driver = webdriver.Chrome('chromedriver',options=options) # 关键:手动给无头模式开启下载权限 driver.command_executor._commands["send_command"] = ("POST", '/session/$sessionId/chromium/send_command') params = {'cmd': 'Page.setDownloadBehavior', 'params': {'behavior': 'allow', 'downloadPath': '/content'}} driver.execute("send_command", params) # 这里替换为你自己的目标网站地址 driver.get("你的目标网站URL") # 下载操作,兼容所有Selenium版本 xpath = '''//*[@id="glopopd_excel"]/span''' driver.find_element(By.XPATH, xpath).click()
验证下载结果
运行下载后,执行如下命令查看/content目录下的文件:
!ls /content
如果需要保存到Google Drive,只需把代码里的downloadPath和download.default_directory都替换为你Drive下的路径即可,比如/content/drive/MyDrive/下载文件。
内容的提问来源于stack exchange,提问作者qss_b
相关产品推荐
相关产品推荐

