当前位置: 代码网 > it编程>前端脚本>Python > Python使用Selenium将网页保存为图片或PDF

Python使用Selenium将网页保存为图片或PDF

2026年02月09日 Python 我要评论
一、背景介绍之前写过一篇将网页保存为图片的文章c#利用webbrowser将网页保存为图片这里有个弊端,c# webbrowser使用的是ie内核,目前很多网站都不支持ie了,所以需要找新的方案替代。

一、背景介绍

之前写过一篇将网页保存为图片的文章

c#利用webbrowser将网页保存为图片

这里有个弊端,c# webbrowser使用的是ie内核,目前很多网站都不支持ie了,所以需要找新的方案替代。 

二、python实现

在python中,一个常见的选择是使用selenium配合pillow将网页保存为图片。

第1步:安装python环境。

如未安装,请参考从安装到应用全面掌握python与opencv的配置与高级功能(最新推荐)

第2步:安装selenium库。

如果你还没有安装它们,可以使用pip来安装:

打开windows命令行工具,输入以下命令:

pip install selenium pillow

第3步:下载chrome浏览器、chromedriver

使用selenium需要一个webdriver,比如chromedriver。

注意:下载的chromedriver需与使用的chrome浏览器版本保持一致。

下载完后,报存到电脑任一目录即可,如:

chromedriver官方下载地址可能打不开,可以使用华为提供的镜像。

index of chromedriver-local 各个版本都有,找到与自己chrome的版本一致,下载即可。

第4步:编写代码将网页保存为图片

from selenium import webdriver
from selenium.webdriver.chrome.service import service
from selenium.webdriver.common.by import by
from selenium.webdriver.chrome.options import options
from pil import image
import io

# 设置chrome选项
chrome_options = options()
chrome_options.add_argument("--headless")  # 无头模式,不打开浏览器窗口
chrome_options.add_argument("--disable-gpu")

# 指定chromedriver的路径
service = service(executable_path='c:\\chromedriver-win64\\chromedriver.exe')

# 创建webdriver对象
driver = webdriver.chrome(service=service, options=chrome_options)

# 访问目标网页
driver.get('https://blog.csdn.net/a497785609')

# 获取页面的实际高度和宽度
width = driver.execute_script("return document.documentelement.scrollwidth")
height = driver.execute_script("return document.documentelement.scrollheight")

# 设置窗口大小
driver.set_window_size(width, height)

# 截图并保存
driver.save_screenshot('c:\\chromedriver-win64\\screenshot.png')

# 使用pillow处理图像(可选)
image = image.open(io.bytesio(driver.get_screenshot_as_png()))
image.show()

# 关闭浏览器
driver.quit()

至此,使用python+chrome即可将网页保存为图片了。

第5步:将网页保存为pdf

使用chromedriver+devtools,可以将网页保存为pdf。

from selenium import webdriver
from selenium.webdriver.chrome.service import service
from selenium.webdriver.common.by import by
from selenium.webdriver.chrome.options import options
from pil import image
import io
import base64

# 设置chrome选项
chrome_options = options()
chrome_options.add_argument("--headless")  # 无头模式,不打开浏览器窗口
chrome_options.add_argument("--disable-gpu")

# chromedriver路径
chromedriver = 'c:\\chromedriver-win64\\chromedriver.exe'

# 访问目标网页
url = 'https://blog.csdn.net/a497785609'

# 保存pdf文件的路径
file_name = "c:\\test.pdf"

# 指定chromedriver的路径
service = service(executable_path=chromedriver)

# 创建webdriver对象
driver = webdriver.chrome(service=service, options=chrome_options)

# 访问目标网页
driver.get(url)

# 获取页面的实际高度和宽度
width = driver.execute_script("return document.documentelement.scrollwidth")
height = driver.execute_script("return document.documentelement.scrollheight")

# 设置窗口大小
driver.set_window_size(width, height)

# 【打印为pdf】
# 调用 chrome devtools 的 printtopdf 方法,打印参数参考:https://chromedevtools.github.io/devtools-protocol/tot/page/#method-printtopdf
pdf_data = driver.execute_cdp_cmd("page.printtopdf", {"landscape": false,
                                                      "displayheaderfooter": false,
                                                      "printbackground": false,
                                                      "scale": 1.0,                # 必须是 float
                                                      "paperwidth": 8.5,           # a4纸宽度(英寸)
                                                      "paperheight": 11.0,         # a4纸高度(英寸)
                                                      "margintop": 0.5,
                                                      "marginbottom": 0.5,
                                                      "marginleft": 0.5,
                                                      "marginright": 0.5})
# 解码并写入 pdf 文件
with open(file_name, "wb") as f:
    f.write(base64.b64decode(pdf_data['data']))

print(" 已保存到文件:"+file_name)

# 关闭浏览器
driver.quit()

到此这篇关于python使用selenium将网页保存为图片或pdf的文章就介绍到这了,更多相关python网页保存为图片或pdf内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2026  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com