1.简介
Puppeteer是谷歌官方出品的一个Node.js 库,提供了一个高级 API来控制DevTools 协议上的 Chrome或 Chromium。Puppeteer默认无界面运行,但可以配置为运行有界面的 Chrome 或Chromium。
相比较Selenium或是PhantomJs,它最大的特点就是它的操作Dom可以完全在内存中进行模拟既在V8引擎中处理而不打开浏览器,而且关键是这个是Chrome团队在维护,会拥有更好的兼容性和前景。
在用户浏览器中,使用 Puppeteer可以完成大多数手动执行的操作。
有开发者开源了支持Python的Puppeteer 库,叫作 Pyppeteer。puppeteer文档(中文)。
Pyppeteer与puppeteer的API几乎相同:
不过需要注意的是,它仅仅支持在Python3.6+的环境下运行。
2.安装
使用Python的pip包管理工具安装Pyppeteer:
pip install pyppeteer
需要注意的是,第一次运行pyppeteer时,会下载最新版本的Chromium(约100M),所以第一次运行的等待时间较长。
参照官方示例代码第一次运行pyppeteer:
import asyncio from pyppeteer import launch async def main(): bro=await launch() page=await bro.newPage() await page.goto("https://www.baidu.com") await page.screenshot({'path':'example.png'}) await bro.close() asyncio.get_event_loop().run_until_complete(main())
第一次下载跑了20多分钟动都没动,这也太慢了。然后摆渡了一下,牛人还是多的。找到了一个行得通的。具体实现过程点此查看
最终实现过程就是,把自己下载好的Chromium复制到本地指定文件夹。
路径:C:UsersRayAppDataLocalpyppeteerpyppeteerlocal-chromium575458chrome-win32chrome.exe
加粗部分是自己创建的两个目录,然后把解压后的chrome-win32文件夹复制到对应目录就可以了。
运行结果如下:
这里附上Chromium各平台下载地址:
'linux': 'https://storage.googleapis.com/chromium-browser-snapshots/Linux_x64/575458/chrome-linux.zip'
'mac': 'https://storage.googleapis.com/chromium-browser-snapshots/Mac/575458/chrome-mac.zip'
'win32': 'https://storage.googleapis.com/chromium-browser-snapshots/Win/575458/chrome-win32.zip'
'win64': 'https://storage.googleapis.com/chromium-browser-snapshots/Win_x64/575458/chrome-win32.zip'
参考:
https://www.jb51.net/article/165276.htm
https://www.cnblogs.com/xiaoaiyiwan/p/10776493.html