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

如何通过Python Selenium下载网页‘Design Review’标题下的PDF文件

用Python Selenium下载指定标题下的PDF文档

核心思路

先定位页面中任意位置的Design Review标题,再找到该标题节点下的所有PDF下载链接,最后处理下载(推荐结合requests直接下载,避免Selenium的下载弹窗问题)。

步骤与代码实现

  1. 配置依赖环境
    先安装所需库:

    pip install selenium webdriver-manager requests
    
  2. 核心代码

    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
    from webdriver_manager.chrome import ChromeDriverManager
    import requests
    import os
    
    # 初始化Chrome浏览器
    driver = webdriver.Chrome(ChromeDriverManager().install())
    driver.get("https://platform.sustain-cert.com/public-project/2756")
    
    try:
        # 等待页面加载,定位任意位置的Design Review标题
        review_title = WebDriverWait(driver, 20).until(
            EC.presence_of_element_located(
                (By.XPATH, "//*[normalize-space(text())='Design Review']")
            )
        )
    
        # 抓取标题下方的所有PDF链接(适配不同页面结构)
        # 这里用XPath从标题节点往后查找,确保只取该标题下的内容
        pdf_links = review_title.find_elements(
            By.XPATH, "./following::a[contains(@href, '.pdf')][1]/ancestor::div[contains(@class, 'section')]//a[contains(@href, '.pdf')]"
        )
    
        # 创建保存目录
        save_dir = "Design_Review_PDFs"
        os.makedirs(save_dir, exist_ok=True)
    
        # 批量下载PDF
        for idx, link in enumerate(pdf_links, 1):
            pdf_url = link.get_attribute("href")
            if not pdf_url or not pdf_url.endswith(".pdf"):
                continue
            # 用requests下载,绕过Selenium下载弹窗
            response = requests.get(pdf_url, headers={"User-Agent": "Mozilla/5.0"}, stream=True)
            filename = os.path.join(save_dir, f"design_review_{idx}.pdf" if not pdf_url.split("/")[-1].endswith(".pdf") else pdf_url.split("/")[-1])
            with open(filename, "wb") as f:
                f.write(response.content)
            print(f"已完成下载: {filename}")
    
    finally:
        # 关闭浏览器
        driver.quit()
    

关键调整点

  • 标题定位:如果页面中Design Review标题有固定标签(比如h2),可把XPath改成//h2[normalize-space(text())='Design Review'],提升定位精度
  • 链接筛选:若页面PDF链接的class或属性有特征,可修改XPath中的条件(比如//a[@class='pdf-link']),避免抓取无关链接
  • 反爬处理:如果网站限制请求,可给requests添加更多请求头,或者改用Selenium直接点击链接下载(需提前配置浏览器默认下载路径)

注意事项

  • 确保ChromeDriver版本与本地Chrome浏览器版本一致,避免启动失败
  • 页面加载较慢时,可适当延长WebDriverWait的等待时间(当前为20秒)
  • 若标题下存在非PDF文件,可通过判断链接后缀.pdf进一步过滤

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:53:14