request_html.render() 适用于 Windows,但不适用于 Ubuntu

问题描述

我有以下代码

    from requests_html import HTMLSession()
    session = HTMLSession()

    response = session.get(url)
    response.html.render()  # <- causes error
    page_soup = soup(response.html.html,"html.parser")
    response.close()

我正在尝试用 JS 解析网站。独立于我尝试呈现的网站,我在 Ubuntu 上遇到以下错误

Traceback (most recent call last):
  File "<stdin>",line 1,in <module>
  File "/home/project1/project1_venv/lib/python3.8/site-packages/requests_html.py",line 586,in render
    self.browser = self.session.browser  # Automatically create a event loop and browser
  File "/home/project1/project1_venv/lib/python3.8/site-packages/requests_html.py",line 730,in browser
    self._browser = self.loop.run_until_complete(super().browser)
  File "/usr/lib/python3.8/asyncio/base_events.py",line 616,in run_until_complete
    return future.result()
  File "/home/project1/project1_venv/lib/python3.8/site-packages/requests_html.py",line 714,in browser
    self._browser = await pyppeteer.launch(ignoreHTTPSErrors=not(self.verify),headless=True,args=self.__browser_args)
  File "/home/project1/project1_venv/lib/python3.8/site-packages/pyppeteer/launcher.py",line 306,in launch
    return await Launcher(options,**kwargs).launch()
  File "/home/project1/project1_venv/lib/python3.8/site-packages/pyppeteer/launcher.py",line 167,in launch
    self.browserWSEndpoint = get_ws_endpoint(self.url)
  File "/home/project1/project1_venv/lib/python3.8/site-packages/pyppeteer/launcher.py",line 226,in get_ws_endpoint
    raise browserError('browser closed unexpectedly:\n')
pyppeteer.errors.browserError: browser closed unexpectedly:

当我在装有 Windows 10 的本地计算机上运行相同的代码时,一切正常。

在两种环境中使用相同版本的库:

requests-html==0.10.0

但在 Windows 上我有 Python 3.7.2 和 Linux 服务器 Python 3.8.6。它的问题?在这两种环境中,我都使用 venvs。

我已经在 Ubuntu 上安装了 Chromium。

解决方法

我在 Windows 上工作正常时遇到同样的问题,而在 Ubuntu 上显示 render() 错误

当我从 Windows 上的代码中删除它时,页面无法正确加载并显示错误

在 ubuntu 上运行正常。我认为在 ubuntu 上不需要包含 render()。

从代码中删除 render() 并尝试它。

希望它会奏效。

谢谢!

,

我遇到了同样的问题。我在以下位置找到了帮助我的解决方案:https://techoverflow.net/2020/09/29/how-to-fix-pyppeteer-pyppeteer-errors-browsererror-browser-closed-unexpectedly/。我执行了以下命令:

apt install -y gconf-service libasound2 libatk1.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

不是没有任何问题。