8

今天学习了一个叫pyppeteer的lib,当我运行我的代码时

import asyncio
from pyppeteer import launch


async def main():
    browser = await launch(options={'devtools': True, 'headless': False})
    page = await browser.newPage()
    await page.goto('http://example.com')
    await page.screenshot({'path': 'baidu.png'})
    await browser.close()


asyncio.get_event_loop().run_until_complete(main())

我有:

pyppeteer.errors.BrowserError: Browser closed unexpectedly:
4

5 回答 5

12

对我来说,我在 docker 中运行,结果是 chromium 没有正确安装所需的库:https ://techoverflow.net/2018/06/05/how-to-fix-puppetteer-error-while- loading-shared-libraries-libx11-xcb-so-1-cannot-open-shared-object-file-no-such-file-or-directory/

于 2020-09-16T17:25:37.200 回答
6

我也一样,当我尝试从终端启动 chromium 时,我注意到它需要在没有沙箱 arg 的情况下运行,所以只需添加它,你的代码就可以工作:

browser=await launch(options={'args': ['--no-sandbox']})
于 2019-08-31T14:23:48.483 回答
1

我认为我们需要安装 chrome 的驱动程序。

sudo apt-get install chromium-chromedriver

这就是我遇到的问题

于 2020-09-05T06:40:08.257 回答
1

要确切了解可以在 python3 cmd 上运行这两个命令的原因:

from pyppeteer.launcher import Launcher
' '.join(Launcher().cmd)

并查看结果。

但主要是因为你以 root 身份运行你的 python 脚本。您要么需要添加“--no-sandbox”配置,要么只是以另一个用户身份运行脚本(任何用户而不是 root)

于 2020-10-30T08:34:44.073 回答
0

pyppeteer我通过运行时遇到了同样的问题cron

我之前加过

export http_proxy=...

对我cron env来说,没有那个,pyppeteer会超时获取文件。使用http_proxy,pyppeteer会意外关闭。

将我的env(它在哪里工作)与一份cron工作进行比较,我发现cron这份工作缺少的是

export no_proxy=localhost,127.0.0.1
于 2021-09-18T08:35:28.500 回答