前期配置
安装
python3 -m pip install pyppeteer
pyppeteer 第一次启动时会自动下载chromium,
手动下载chromium方法
pyppeteer-install
修复小bug
找到pyppeteer包下的connection.py模块,在其43行和44行改为下面这样:
self._ws = websockets.client.connect(self._url, max_size=None, loop=self._loop)
self._ws = websockets.client.connect(self._url, max_size=None, loop=self._loop, ping_interval=None, ping_timeout=None)
使用 docker browserless 镜像建立chrome连接池
参考 https://zhuanlan.zhihu.com/p/66296309
https://docs.browserless.io/docs/docker-quickstart.htmlhttps://hub.docker.com/r/browserless/chrome/dockerfile
docker 配置browserless服务(win10上没有配置成功,ubuntu服务器上没有问题)
```bash
docker pull browserless/chrome:latest
docker run -d -p 3000:3000 --shm-size 2gb --restart always -e "CONNECTION_TIMEOUT=-1" -e "DEBUG=browserless/chrome" -e "MAX_CONCURRENT_SESSIONS=10" -e "EXIT_ON_HEALTH_FAILURE=true" -e "PREBOOT_CHROME=true" -e "KEEP_ALIVE=true" --name browserless browserless/chrome:latest
https://docs.browserless.io/docs/docker.html#connection-timeout browserless/chrome 文档
import asyncioimport timeimport pyppeteer
async def main():
browser = await pyppeteer.connect({'browserWSEndpoint': 'ws://172.20.1.187:3000'}) # 修改为自己的ip
page = await browser.newPage()
await page.goto('https://www.baidu.com')
await page.screenshot({'path': 'example.png'})
print(await browser.version())
print(await browser.userAgent())
time.sleep(3)
await browser.disconnect()
asyncio.get_event_loop().run_until_complete(main())