【问题标题】:request_html.render() working on windows, but not on Ubuntu请求 html.render() 在 Windows 上工作,但不在 Ubuntu 上
【发布时间】:2021-04-28 10:39:13
【问题描述】:

我有以下代码:

    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。

【问题讨论】:

  • 似乎 chromium 需要一些 lib 才能无头运行,也许 thisthis 可以提供帮助。

标签: python python-requests-html


【解决方案1】:

我遇到了同样的问题。我找到了对我有帮助的解决方案: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

不是没有问题。

【讨论】:

    【解决方案2】:

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

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

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

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

    希望它会起作用。

    谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多