我想创建一个使用 python 代码抓取一些网站的 docker 镜像。 我使用 x11vnc 作为虚拟监视器,使用 firefox-esr 作为浏览器,使用 nodriver 作为 python scraper。
实际上我可以启动一个容器,并且可以通过TightVNC看到虚拟监视器。我可以从交互式 shell 启动 firefox-esr,但如果我使用 nodriver,将 /usr/bin/firefox-esr 作为可执行路径传递,它无法启动浏览器并引发
---------------------
Failed to connect to browser
---------------------
One of the causes could be when you are running as root.
In that case you need to pass no_sandbox=True
有人可以帮助我吗?
我今天也经历过这个。我正在使用 Chrome,但我认为它的工作方式与 Firefox 相同。
我已经做了很多调试,因为错误并没有那么详细,在调试时我发现真正的异常是 asyncio 抛出的“连接被拒绝”。
最终传递了 headless=True 和 sandbox=False ,它终于帮助我解决了这个异常。
这是有效的配置:
driver = await uc.start(
browser_executable_path=chrome_bin_path, headless=True, sandbox=False
)