这篇文章主要讲解了“python基于pyppeteer如何制作PDF文件”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python基于pyppeteer如何制作PDF文件”吧!
pyppeteer是什么
介绍pyppeteer之前,有必要先介绍一下操纵,操纵是谷歌官方出的一个通过DevTools协议控制无头Chrome的节点库。通过操纵木偶的人可以直接控制铬浏览器模拟大部分用户操作。
所谓无头Chrome就是Chrome浏览器的无界面形态。
而pyppeteer就是操纵的python版本非官方实现,它是一位来自于日本的工程师依据操纵的一些功能开发出来的非官方版本
pyppeteer采用了python的异步机制,需要Python3.5及以上版本才支持。
pyppeteer能做什么
但凡是需要通过Chrome浏览器手动完成的操作都可以通过pyppeteer自动完成,例如:
- <李>
生成页面截图
李> <李>生成PDF文件
李> <李>抓取单页面应用并生成预先呈现的内容
李> <李>从网站抓取你需要的内容
李> <李>自动表单提交,UI测试,键盘输入等
截图
例如将页面生成截图可以直接调用页面。截图方法
import asyncio 得到pyppeteer import 发射 async def main ():=,,browser  await 发射()=,,page  await browser.newPage () ,await page.goto (& # 39; https://foofish.net& # 39;) ,await page.screenshot ({& # 39; path & # 39;:, & # 39; example.png& # 39;}) ,await browser.close () asyncio.get_event_loop () .run_until_complete (main ())
截图功能在海报分享等场景用的多,有看过有赞工程师分享的一篇文章,就有用到操纵木偶的人来做海报分享,性能比帆布高。
而将网页转换为PDF的应用场景更多,比如将网站博客,专栏,或者公众号文章批量导出PDF、方便离线阅读,比如我们最近做的一个医疗项目需要将用户填写的资料支持PDF形式批量导出,就是用的Pyppeteer
导出PDF
导出PDF直接调用page.pdf方法就可以,代码非常简洁
import asyncio 得到pyppeteer import 发射 async def main ():=,,browser  await 发射()=,,page  await browser.newPage () ,await page.goto (& # 39; https://foofish.net& # 39;) ,await page.pdf ({ “path"才能:,“example.pdf",,“format":, & # 39; a4 # 39;}) ,await browser.close () asyncio.get_event_loop () .run_until_complete (main ())
接下来我们以公众号文章为例,将html页面制作成一个PDF文件。
公众号链接导出PDF示例
安装pyppeteer
pip install pyppeteer
任意找一篇公众号的文章链接
, url =,“https://mp.weixin.qq.com/s/6VBXs19icV0O5hT7cHYwgw"
完成代码:
, browser =, await 启动( 选项才能={& # 39;无头# 39;:,真的, ,,,,& # 39;args # 39;:, (& # 39;——no-sandbox& # 39; ,,,,,,& # 39;-disable-gpu& # 39; ,,,,,,& # 39;-disable-dev-shm-usage& # 39; ,,,,,,& # 39;-disable-setuid-sandbox& # 39; ,,,,,,& # 39;-no-first-run& # 39; ,,,,,,& # 39;-no-zygote& # 39; ,,,,,,& # 39;-single-process& # 39; ,,,,,,]},,)=,,page  await browser.newPage ()=,url “https://mp.weixin.qq.com/s/6VBXs19icV0O5hT7cHYwgw" ,await page.goto (url)=,file_name “test.pdf" ,await page.pdf ({“path": file_name,,“format":, & # 39; a4 # 39;}) 以前,await browser.close () >第一次运行的时候,会自动下载铬浏览器,铬是chrome的开源版本,需要几分钟才能下载完
[W: pyppeteer.chromium_downloader], start chromium 下载。 Download may  take a few 分钟。 100% |██████████|,127496521/127496521 [00:20<00:00, 6268578.80/s) (W: pyppeteer.chromium_downloader), chromium download 完成。 [W: pyppeteer.chromium_downloader], chromium extracted :, C: \当地用户\ lzjun \ AppData \ \ pyppeteer \ pyppeteer \ local-chromium \ 575458执行完成后,我们来预览下pdf文件
和原文链接对比,发现文章中的图片丢失了。
python基于pyppeteer如何制作PDF文件