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

如何使用Selenium截取不含可折叠区块的网页元素?

纽约时报新冠地图截图优化:移除底部区块与替代Pillow裁剪

解决底部"Thanks for reading the Times"区块问题

直接通过Selenium执行JavaScript隐藏该区块,避免截图时包含它:

  • 用浏览器开发者工具(F12)定位区块的选择器(类名、ID或XPath)
  • 执行JS将其设置为不可见

替代Pillow裁剪的优雅方案

无需事后裁剪,提前处理页面元素后直接截取目标地图:

  1. 隐藏顶部纽约时报横幅
  2. 直接截取mapboxgl-canvas元素,得到的截图就是干净的地图区域

修改后的完整代码

from selenium.webdriver.common.by import By
from selenium import webdriver

driver = webdriver.Chrome()
driver.page_load_strategy = 'none'
url = "https://www.nytimes.com/interactive/2021/us/covid-cases.html"
driver.get(url)

# 隐藏底部干扰区块(替换为实际选择器,可通过F12查看)
try:
    bottom_block = driver.find_element(By.CLASS_NAME, "css-1p7iugi")
    driver.execute_script("arguments[0].style.display = 'none';", bottom_block)
except Exception:
    pass

# 隐藏顶部横幅(替换为实际选择器)
try:
    top_banner = driver.find_element(By.CLASS_NAME, "css-1vkm6nb")
    driver.execute_script("arguments[0].style.display = 'none';", top_banner)
except Exception:
    pass

# 直接截取干净的地图元素
map_element = driver.find_element(By.CLASS_NAME, "mapboxgl-canvas")
map_element.screenshot('clean_covid_map.png')

driver.quit()

关键说明

  • 选择器验证:打开目标页面按F12,找到顶部横幅和底部区块的实际类名/ID,替换代码中的示例值
  • 无裁剪优势:通过隐藏干扰元素直接截取目标,比事后裁剪更高效,代码更简洁
  • 鲁棒性处理:加入try-except块防止元素定位失败导致脚本中断

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 12:05:37