使用 Splinter 浏览器访问某些网站时进程卡住

问题描述

美好的一天。我是网络抓取自动化的新手,刚刚开始对包碎片进行一些测试。 我的工作环境如下:

  1. 操作系统:Ubuntu20.04(在 Windows10 上,没有 gui)
  2. IDE:VScode
  3. 语言:Python
  4. 包:splinter 0.14.0

我正在学习一些教程并执行如下代码效果很好:

from splinter import browser

executable_path = {"executable_path" : r'/usr/local/bin/chromedriver'}
browser = browser(driver_name = 'chrome',**executable_path,headless =True)
browser.visit('https://www.google.com')
print(browser.title)
# return Google
browser.quit()

但是,当我尝试使用其他一些网站(例如 https://tw.yahoo.com/?p=us)时,系统卡住了 一段时间后返回如下错误信息:

File "/home/stevetsaoch/Tradebot/main.py",line 23,in <module>
browser.visit('https://tw.yahoo.com/?p=us')
File "/home/stevetsaoch/.local/lib/python3.8/site-packages/splinter/driver/webdriver/__init__.py",line 287,in visit
self.driver.get(url)
File "/home/stevetsaoch/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py",line 333,in get
self.execute(Command.GET,{'url': url})
File "/home/stevetsaoch/.local/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py",line 321,in execute
self.error_handler.check_response(response)
File "/home/stevetsaoch/.local/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py",line 242,in check_response
raise exception_class(message,screen,stacktrace)
selenium.common.exceptions.TimeoutException: Message: timeout: Timed out receiving message from renderer: 299.850
(Session info: headless chrome=87.0.4280.141)

据我所知,上面的消息表明我的 chrome 无法找到 https://tw.yahoo.com/?p=us,并且在搜索认时间段后返回超时错误。顺便说一句,我同时在 Windows 上用我的 chrome 检查了 https://tw.yahoo.com/?p=us,它在很短的时间内做出响应。 对这种情况有什么建议吗?任何建议或意见表示赞赏。

解决方法

我做了一些研究并得到了答案。 我忘了设置 Xvfb 库。在我的 bash 中运行代码后,如下所示:

Xvfb :99 -ac
export DISPLAY=:99

问题解决了!

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...