首先是耳熟能详的介绍:
Puppeteer 是 Google 基于 Node.js 开发的一个工具,主要是用来操纵 Chrome 浏览器的 API,通过 Javascript 代码来操纵 Chrome 浏览器的一些操作,用作网络爬虫完成数据爬取、Web 程序自动测试等任务。其 API 极其完善,功能非常强大。 而 Pyppeteer 又是什么呢?它实际上是 Puppeteer 的 Python 版本的实现,但他不是 Google 开发的,是一位来自于日本的工程师依据 Puppeteer 的一些功能开发出来的非官方版本
安装:
pip install pyppeteer
第一个坑:
随着人们对数据重要性的认知,对数据保护越来越严格,以前万金油的selenium也被很多网站进行了甄别,比如某宝等
使用pyppeteer是为了对一些js加密混淆以及上述情况进行处理,具体使用方法自行度娘,有很多教程和现成的使用案例
当我们运行之后,会发现它有很多的输出日志信息,这块怎么办呢,经过多方搜索,崔大大(https://github.com/miyakogi/pyppeteer/issues/103) 提供了一个解决方案:
import logging
pyppeteer_level = logging.WARNING
logging.getLogger('pyppeteer').setLevel(pyppeteer_level)
logging.getLogger('websockets.protocol').setLevel(pyppeteer_level)
第二个坑:
我在linux上部署后,发现怎么都运行不起来
原来是因为pyppeteer需要在没有沙盒arg的情况下运行这里参考https://blog.csdn.net/qq_26870933/article/details/101288399,谢谢猫哥的鱼库
# browser = await pyppeteer.launch() 需要更改为下面的
browser = await pyppeteer.launch(options={'args': ['--no-sandbox']})
第三个坑
如果运行项目时发现第二个坑始终存在,也有可能是chromium安装问题,在linux上运行下面命令查看chromium是否存在
whereis chromium
上图发现,pyppeteer并没有成功安装chromium
解决方案,参考下面这位大佬的博客
https://www.cnblogs.com/ianduin/p/12003626.html
我的centos系统就出现了这个情况,根据这个博客安装之后在运行,就没问题了