请求_html.render()在windows上工作,但在Ubuntu上不工作

2024-04-18 18:55:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码:

    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


Tags: inpyselfbrowserhomevenvlibpackages
2条回答

当我在Ubuntu上显示render()的错误时,我在windows上也面临同样的问题

当我从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

不是的,它没有任何问题

相关问题 更多 >