pyppeteer.errors.BrowserError:浏览器意外关闭

Sug*_*ang 4 pyppeteer

今天,我学习了名为 pyppeteer 的库,当我运行我的代码时

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())
Run Code Online (Sandbox Code Playgroud)

我有:

pyppeteer.errors.BrowserError: Browser closed unexpectedly:
Run Code Online (Sandbox Code Playgroud)

Bai*_*ong 29

这是因为pyppeteer不会安装所需的依赖项chromium。所以你应该自己安装它们。

执行ldd ~/.local/share/pyppeteer/local-chromium/588429/chrome-linux/chrome | grep 'not found'以获取丢失的依赖项:

输出示例:

libXcursor.so.1 => not found
libnss3.so => not found
libnssutil3.so => not found
libsmime3.so => not found
libcups.so.2 => not found
libXss.so.1 => not found
libpangocairo-1.0.so.0 => not found
libpango-1.0.so.0 => not found
libcairo.so.2 => not found
libatk-1.0.so.0 => not found
libatk-bridge-2.0.so.0 => not found
libgtk-3.so.0 => not found
libgdk-3.so.0 => not found
libgdk_pixbuf-2.0.so.0 => not found
Run Code Online (Sandbox Code Playgroud)

你可以一一安装它们,或者安装google-chrome它的依赖项。

对于 ubuntu/debian:

libXcursor.so.1 => not found
libnss3.so => not found
libnssutil3.so => not found
libsmime3.so => not found
libcups.so.2 => not found
libXss.so.1 => not found
libpangocairo-1.0.so.0 => not found
libpango-1.0.so.0 => not found
libcairo.so.2 => not found
libatk-1.0.so.0 => not found
libatk-bridge-2.0.so.0 => not found
libgtk-3.so.0 => not found
libgdk-3.so.0 => not found
libgdk_pixbuf-2.0.so.0 => not found
Run Code Online (Sandbox Code Playgroud)

再次执行ldd ~/.local/share/pyppeteer/local-chromium/588429/chrome-linux/chrome | grep 'not found',可能会漏掉一些依赖:

libXss.so.1 => not found
Run Code Online (Sandbox Code Playgroud)

然后执行apt install libxss1安装遗漏的libXss.so.1

额外的

如果你想截图,也许你需要一些中日韩字体:

sudo apt install fonts-wqy-zenhei

  • 这是唯一对我有帮助的事情。谢谢。 (2认同)

Vla*_*mir 14

我得到了同样的结果,当我尝试从终端启动 chromium 时,我注意到它需要在没有沙箱参数的情况下运行,所以只需添加它,您的代码就可以工作:

browser=await launch(options={'args': ['--no-sandbox']})
Run Code Online (Sandbox Code Playgroud)

  • 不为我解决它。 (9认同)