将网页内容导出为PDF是一个常见的需求,Python中有一些库可以帮助你实现这个功能。以下是使用weasyprint和selenium两个库来实现这一功能的示例。
使用weasyprint
weasyprint是一个可以将HTML和CSS转换为PDF的库。
安装
使用pip安装weasyprint:
bash
复制
pip install weasyprint
使用
python
复制
import weasyprint
HTML_STRING = """
<!DOCTYPE html>
<html>
<head>
<title>My First PDF</title>
</head>
<body>
<h1>Hello, PDF!</h1>
<p>This is my first PDF created with Python and WeasyPrint.</p>
</body>
</html>
但是,如果你想从一个实际的网页导出PDF,你可能需要首先获取网页的HTML内容,这通常需要使用到像requests这样的库来获取网页内容。但请注意,很多网站会有反爬虫机制,直接获取可能不太容易。
使用selenium和pdfkit
对于更复杂的网页或需要JavaScript渲染的网页,你可能需要使用selenium来模拟浏览器行为,并结合pdfkit或类似的库来导出PDF。
安装
首先,你需要安装selenium和相应的浏览器驱动(如chromedriver)。然后,你可以使用wkhtmltopdf工具(它是pdfkit的依赖)来生成PDF。
bash
复制
pip install selenium pdfkit
# 安装wkhtmltopdf,这通常涉及到从官方网站下载并安装二进制文件
使用
以下是一个简单的示例,使用selenium打开网页并等待它加载,然后使用pdfkit将其导出为PDF。
python
复制
from selenium import webdriver
import pdfkit
import time
# 配置selenium使用Chrome浏览器
driver = webdriver.Chrome()
driver.get("https://www.example.com") # 替换为你想导出的网页URL
time.sleep(5) # 等待网页加载,这个时间可能需要根据你的网页调整
# 获取网页内容
html = driver.page_source
# 使用pdfkit将HTML内容导出为PDF
path_wkhtmltopdf = '/usr/local/bin/wkhtmltopdf' # 替换为你的wkhtmltopdf路径
config = pdfkit.configuration(wkhtmltopdf=path_wkhtmltopdf)
pdf = pdfkit.from_string(html, output_path='output.pdf', configuration=config)
driver.quit() # 关闭浏览器
请注意,这种方法可能需要一些调整,特别是处理JavaScript渲染和动态内容方面。此外,确保wkhtmltopdf的路径是正确的,并且该工具已经安装在你的系统上。