Ubuntu上运行pyppeteer报错Browser closed unexpectedly经验总结

Table of Contents

上一篇讲到【pyppeteer爬取JavaScript渲染的动态网页 问题总结及代码实现】如何使用pyppeteer

因为pyppeteer是基于无头浏览器chromium,所以在ubuntu下运行,需要安装对应浏览器,具体方案见上述上一篇博客有讲到。

可是当我们运行一个在window下正常运行的.py文件时,在Ubuntu下运行却出了错

pyppeteer.errors.BrowserError: Browser closed unexpectedly


  * 1

上网找了很多解决方案,下面列出三个最需要注意的地方, 同时处理好三个地方,才能不报错

环境配置

Ubuntu安装对应依赖

sudo apt-get install  gconf-service libasound2 libatk1.0-0 libatk-bridge2.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wget


  * 1

该方法来自这位大佬的博客,感激不尽。

以非沙箱模式运行

我们通常都会运行如下代码来启动一个无头浏览器

browser = await launch()


  * 1

这在windows系统下不会有任何问题,但是(至少在我的Ubuntu上)在linux系统下会有问题,我们需要以非沙箱模式启动,在启动浏览器的时候添加参数

options={'args': ['--no-sandbox']}


  * 1

启动代码修改如下

browser = await launch(options={'args': ['--no-sandbox']})


  * 1

以root权限运行python脚本

我们通常使用

python ./xxx.py


  * 1

来启动我们的脚本,但是在使用pyppeteer的时候,需要以root权限启动脚本,否则可能会报错(至少在我的Ubuntu上会)

sudo python ./xxx.py


  * 1

0 评论

发表评论

精品游戏◆乐于分享


Title