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

如何批量下载指定序列URL对应的网页为PDF文件?

批量将固定格式网页转为PDF的实现方案

方法一:Python + Chrome无头模式(推荐,贴近Chrome原生打印效果)

利用Chrome的无头模式模拟手动打印为PDF的操作,适合有Python基础的用户,能完美还原Chrome渲染的页面效果。

步骤:

  1. 安装依赖
pip install selenium

同时确保Chrome浏览器已安装,并下载与Chrome版本匹配的ChromeDriver(可放在Python环境路径或代码同目录)。

  1. 批量处理代码示例
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
import os

# 替换为你的实际参数
SITE = "your-site"
STUFF = "your-stuff"
START_NUM = 1  # 起始number
END_NUM = 50   # 结束number
SAVE_DIR = "pdf_results"

# 创建保存目录
if not os.path.exists(SAVE_DIR):
    os.makedirs(SAVE_DIR)

# 配置Chrome无头模式
chrome_options = Options()
chrome_options.add_argument("--headless=new")
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36")

# 启动浏览器
driver = webdriver.Chrome(options=chrome_options)
wait = WebDriverWait(driver, 10)  # 最长等待10秒加载页面

try:
    for num in range(START_NUM, END_NUM + 1):
        url = f"https://www.{SITE}.com/{STUFF}/{num}"
        driver.get(url)
        
        # 等待页面核心内容加载完成(可根据页面实际元素调整,比如等待正文容器出现)
        wait.until(EC.presence_of_element_located((By.TAG_NAME, "body")))
        
        # 调用Chrome打印API生成PDF
        pdf_path = os.path.join(SAVE_DIR, f"page_{num}.pdf")
        driver.execute_cdp_cmd("Page.printToPDF", {
            "path": pdf_path,
            "format": "A4",
            "printBackground": True,  # 打印背景图片
            "isHeaderFooterEnabled": False,  # 去掉页眉页脚
            "marginTop": 0,
            "marginBottom": 0
        })
        print(f"已生成:{pdf_path}")
finally:
    driver.quit()

方法二:Python + wkhtmltopdf(轻量无浏览器依赖)

使用开源的网页转PDF工具wkhtmltopdf,通过Python调用命令行实现批量处理,无需安装Chrome。

步骤:

  1. 安装wkhtmltopdf(根据系统下载对应版本),并确保其可执行文件在系统PATH中,或在代码中指定全路径。
  2. 批量处理代码示例
import os
import subprocess

# 替换为你的实际参数
SITE = "your-site"
STUFF = "your-stuff"
START_NUM = 1
END_NUM = 50
SAVE_DIR = "pdf_results"
WKHTML_PATH = "wkhtmltopdf"  # Windows下示例:"C:/Program Files/wkhtmltopdf/bin/wkhtmltopdf.exe"

if not os.path.exists(SAVE_DIR):
    os.makedirs(SAVE_DIR)

for num in range(START_NUM, END_NUM + 1):
    url = f"https://www.{SITE}.com/{STUFF}/{num}"
    pdf_path = os.path.join(SAVE_DIR, f"page_{num}.pdf")
    
    # 调用wkhtmltopdf命令
    cmd = [
        WKHTML_PATH,
        "--no-header-footer",
        "--print-media-type",
        "--load-error-handling", "ignore",
        url,
        pdf_path
    ]
    subprocess.run(cmd, check=True)
    print(f"已生成:{pdf_path}")

注意事项

  • 动态页面处理:如果页面包含JS渲染的内容,方法一的Chrome无头模式兼容性更好;方法二可添加--javascript-delay 3000参数延迟3秒等待渲染。
  • 反爬规避:可在请求中添加自定义User-Agent,必要时配合代理IP(selenium可通过add_argument('--proxy-server=ip:port')设置)。
  • 格式优化:可根据需求调整PDF的页面尺寸、边距等参数,具体参考Chrome Page.printToPDF API文档或wkhtmltopdf命令行参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:47:06