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

如何在Selenium中模拟右键另存为保存完整网页?含元素定位后场景

在Selenium中模拟右键「另存为」保存完整网页的实现方法

你之前用driver.page_source和pd.read_html没达到预期很正常:

  • driver.page_source只能拿到页面当前的静态DOM代码,动态加载的内容(比如JS渲染的元素)可能缺失,而且没法保存图片、CSS这类外部资源,存下来的只是纯文本HTML,不是完整网页。
  • pd.read_html本来就是用来提取页面里的表格数据的,根本不是保存完整网页的工具。

下面给你两种可行的实现方式,都是在定位到指定元素后执行:

方法一:模拟右键+键盘快捷键(贴近手动操作)

这种方法用Selenium的ActionChains模拟右键点击,再通过键盘快捷键触发「另存为」,最后用pyautogui处理保存对话框。

步骤&代码:

  1. 先安装依赖:pip install pyautogui
  2. 编写代码:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
import pyautogui
import time

# 初始化浏览器
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=options)

# 打开目标页面,定位指定元素
driver.get("你的目标页面URL")
target_element = driver.find_element(by=By.LINK_TEXT, value="你的链接文本")

# 模拟右键点击目标元素
action = ActionChains(driver)
action.context_click(target_element).perform()
time.sleep(0.5)  # 给菜单弹出留时间

# 按右键菜单里「另存为」的快捷键S(Windows系统,Mac需改用Cmd+S)
pyautogui.press('s')
time.sleep(1)

# 输入保存路径和文件名(示例:"D:\\saved_pages\\page.html")
pyautogui.typewrite("指定文件夹路径/保存的文件名.html")
time.sleep(0.5)

# 按回车确认保存
pyautogui.press('enter')

# 后续操作
driver.quit()

注意事项:

  • 不同系统快捷键有差异:Windows右键菜单「另存为」是S,Mac需要用pyautogui.hotkey('command', 's')
  • 依赖系统窗口焦点,自动化过程中不能手动操作鼠标键盘,否则会干扰对话框输入

方法二:用Chrome DevTools协议(CDP)直接保存完整网页(更稳定)

这种方法通过调用浏览器的DevTools接口,直接获取包含所有资源的MHTML格式页面,然后写入指定文件夹,不需要模拟键盘和对话框,适合自动化场景。

步骤&代码:

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

# 初始化浏览器
options = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=options)

# 打开目标页面,定位指定元素
driver.get("你的目标页面URL")
target_element = driver.find_element(by=By.LINK_TEXT, value="你的链接文本")

# 如果需要点击元素跳转到新页面,可添加:target_element.click()

# 调用CDP命令获取完整页面的MHTML内容
mhtml_content = driver.execute_cdp_cmd('Page.captureSnapshot', {'format': 'mhtml'})['data']

# 写入到指定文件夹
save_path = "指定文件夹路径/保存的页面.mhtml"
with open(save_path, 'w', encoding='utf-8') as file:
    file.write(mhtml_content)

# 后续操作
driver.quit()

优势:

  • 不依赖系统环境和窗口焦点,自动化执行更稳定
  • MHTML格式会把页面的所有资源(图片、CSS、JS)打包成一个文件,完全还原网页内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 22:09:24