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

使用WebBot的Python应用如何触发Chrome PDF阅读器的下载功能?

可行的PDF下载方案

方案1:模拟点击Chrome PDF阅读器的下载按钮

Chrome内置PDF阅读器的下载按钮有固定DOM选择器,你可以通过WebBot或Selenium的元素定位功能直接触发点击:

  • 等待页面加载完成后,用CSS选择器定位按钮:cr-icon-button#download
  • 或用XPath定位://*[@id="download"]
  • 示例代码(基于Selenium,WebBot操作逻辑类似):
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.Chrome()
driver.get("https://www.website.com/generatePDF")

# 等待下载按钮加载完成并执行点击
download_btn = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.CSS_SELECTOR, 'cr-icon-button#download'))
)
download_btn.click()

注意:如果PDF阅读器被嵌套在iframe中,需要先切换到对应iframe再定位元素。

方案2:拦截网络请求捕获PDF数据流

PDF是流式传输的,浏览器会向后端发起请求获取原始数据,你可以通过浏览器DevTools协议(CDP)拦截响应并保存:

  • 用Selenium配合CDP监听Network.responseReceived事件,筛选出PDF类型的响应
  • 调用Network.getResponseBody获取响应内容,写入本地文件
    示例代码:
from selenium import webdriver
import base64

driver = webdriver.Chrome()
# 开启网络监听
driver.execute_cdp_cmd('Network.enable', {})

def save_pdf(event):
    response = event.get('response')
    if response and response.get('contentType') == 'application/pdf':
        # 获取响应体内容
        body_data = driver.execute_cdp_cmd('Network.getResponseBody', {'requestId': event['requestId']})
        # 写入本地文件
        with open('downloaded.pdf', 'wb') as f:
            if body_data['base64Encoded']:
                f.write(base64.b64decode(body_data['body']))
            else:
                f.write(body_data['body'].encode('utf-8'))

# 绑定监听事件
driver.add_cdp_listener('Network.responseReceived', save_pdf)

driver.get("https://www.website.com/generatePDF")

方案3:修改Chrome启动参数,强制直接下载PDF

通过修改Chrome启动参数,跳过内置阅读器,让浏览器自动下载PDF:

  • 添加--pdfjs.disabled=true禁用内置PDF阅读器,同时配置默认下载目录
    示例代码:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

options = Options()
# 禁用内置PDF阅读器,触发自动下载
options.add_argument('--pdfjs.disabled=true')
# 配置下载目录及自动下载选项
options.add_experimental_option('prefs', {
    'download.default_directory': '/你的本地保存路径',
    'download.prompt_for_download': False,
    'download.directory_upgrade': True
})

driver = webdriver.Chrome(options=options)
driver.get("https://www.website.com/generatePDF")

导航到目标URL后,浏览器会自动将PDF下载到指定目录,无需手动操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 16:30:58