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

使用Python Chrome Driver捕获Wayback Machine截图时左右留白问题求助

解决Wayback Machine网页截图左右留白问题

你的代码用Chrome Headless模式截图时出现左右留白,是因为Wayback Machine把存档网页放在了特定容器里,默认窗口设置没匹配到存档页面的实际宽度。以下是调整方案:

核心调整思路

  • 弃用--start-maximized,根据存档页面的实际内容宽度设置窗口尺寸
  • 替换固定time.sleep()为显式等待,确保页面完全加载
  • 直接截取存档内容的容器元素,而非整个浏览器窗口

修改后的代码

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import pandas as pd

df_merged_new_url = pd.read_csv(path_to_csv)
chrome_options = Options()
chrome_options.add_argument('--headless=new')  # 新版Headless更贴近正常浏览器渲染效果
chrome_options.add_argument('--disable-gpu')

driver = webdriver.Chrome(executable_path='./chromedriver', options=chrome_options)

# 循环处理CSV中的每条链接
for idx, row in df_merged_new_url.iterrows():
    driver.get(row["new_url"])
    
    # 等待存档内容容器加载完成,最长等待20秒
    wait = WebDriverWait(driver, 20)
    archive_content = wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, '.archive-content')))
    
    # 获取内容容器的实际尺寸,加少量余量避免裁剪
    content_width = archive_content.size['width'] + 20
    content_height = archive_content.size['height'] + 20
    
    # 调整窗口尺寸匹配内容
    driver.set_window_size(content_width, content_height)
    
    # 直接截取内容容器的截图,精准匹配存档网页显示范围
    archive_content.screenshot(f"screenshot_{idx}.png")  # 替换为你的实际存储路径

driver.quit()

关键说明

  • --headless=new是Chrome新版无头模式,渲染逻辑和正常浏览器更一致,能减少显示差异
  • 显式等待.archive-content元素加载完成,比固定等待时间更可靠,避免页面未加载完全就截图
  • 直接截取存档内容容器,彻底规避浏览器窗口自带的留白问题,截图效果和正常访问页面一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 10:52:12