可以使用 Python 中的 Selenium 和 requests 库来实现将网页及其相关资源文件(例如 JavaScript、CSS、图像等)另存为本地文件的功能。下面是一个简单的示例代码,演示了如何使用 Selenium 打开网页、提取页面内容并使用 requests 库下载相关资源文件:
import os
import requests
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
# 设置 Chrome WebDriver 的路径
chrome_driver_path = "path/to/chromedriver"
# 设置 Chrome WebDriver 的选项
chrome_options = Options()
chrome_options.add_argument("--headless") # 无头模式运行,不打开浏览器窗口
# 启动 Chrome WebDriver
service = Service(chrome_driver_path)
driver = webdriver.Chrome(service=service, options=chrome_options)
# 要保存的网页 URL
url = "https://example.com"
# 打开网页
driver.get(url)
# 获取网页内容
html_content = driver.page_source
# 创建保存目录
save_dir = "saved_page"
if not os.path.exists(save_dir):
os.makedirs(save_dir)
# 保存网页 HTML 文件
with open(os.path.join(save_dir, "page.html"), "w", encoding="utf-8") as f:
f.write(html_content)
# 提取页面中的资源文件并下载
elements = driver.find_elements(By.XPATH, "//link[@rel='stylesheet'] | //script | //img | //link[@rel='icon']")
for element in elements:
if element.tag_name == "link":
resource_url = element.get_attribute("href")
elif element.tag_name == "script":
resource_url = element.get_attribute("src")
elif element.tag_name == "img":
resource_url = element.get_attribute("src")
elif element.tag_name == "link":
resource_url = element.get_attribute("href")
if resource_url:
# 下载资源文件
resource_response = requests.get(resource_url)
resource_filename = resource_url.split("/")[-1]
with open(os.path.join(save_dir, resource_filename), "wb") as f:
f.write(resource_response.content)
# 关闭 WebDriver
driver.quit()
参考文档:Python Selenium 将网页另存下载(包含资源文件(js,css,图片等))-CJavaPy