【发布时间】:2020-11-27 03:20:18
【问题描述】:
我最初想让一个无头浏览器运行以动态解析网页。即使添加了等待以允许网站加载,我也遇到了一系列问题。注释掉无头选项后,我使用 xming 服务器作为网页的显示,以查看创建浏览器后它的实际外观。
这是我看到的截图:
a new tab in chrome, and the browser seems to never get to the .get().
我还收到一个弹出窗口,提示“Chrome 自动化扩展程序已崩溃...”
找了很多,有人建议不要以admin/root身份运行,所以我在运行之前没有使用sudo。这并没有改变消息。
下面是我的代码和终端输出:
options = webdriver.ChromeOptions()
# options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
options.add_argument('--ignore-certificate-errors')
options.add_argument('--lang=en_US')
options.add_argument('--user-data-dir')
options.add_argument("--disable-gpu")
# options.add_argument("--remote-debugging-port=9222")
browser = webdriver.Chrome(executable_path='/usr/bin/chromedriver', options=options)
browser.get("http://www.google.com")
Ubuntu 终端:
回溯(最近一次通话最后一次):
文件“practice3.py”,第 40 行,在
browser = webdriver.Chrome(executable_path='/usr/bin/chromedriver', options=options)
init
中的文件“etc/anaconda3/lib/python3.8/site-packages/selenium/webdriver/chrome/webdriver.py”,第 76 行
RemoteWebDriver.初始化(
init
中的文件“etc/anaconda3/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py”,第 157 行
self.start_session(功能,浏览器配置文件)
文件“etc/anaconda3/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py”,第 252 行,在 start_session
响应 = self.execute(Command.NEW_SESSION, 参数)
文件“etc/anaconda3/lib/python3.8/site-packages/selenium/webdriver/remote/webdriver.py”,第 321 行,在执行
self.error_handler.check_response(response)
文件“etc/anaconda3/lib/python3.8/site-packages/selenium/webdriver/remote/errorhandler.py”,第 242 行,在 check_response
引发异常类(消息、屏幕、堆栈跟踪)
selenium.common.exceptions.WebDriverException:消息:未知错误:DevToolsActivePort 文件不存在
(驱动信息:chromedriver=2.41.578700 (2f1ed5f9343c13f73144538f15c00b370eda6706),platform=Linux 4.4.0-18362-Microsoft x86_64)
还有:
Ubuntu 20.04 LTS
Selenium 版本 3.141.0
Chrome 版本 84.0.4147.105
~$ /usr/bin/chromedriver
Starting ChromeDriver 2.41.578700 (2f1ed5f9343c13f73144538f15c00b370eda6706) on port 9515
Only local connections are allowed.
【问题讨论】:
-
我会在没有选项的情况下运行,只是为了解决一些问题。似乎您在那里设置了一些通常与无头一起使用的选项,但您注释掉了无头部分。顺便说一句,你不需要在 get 之后等待...... Selenium 在调用 get 方法后已经等待页面加载(就绪状态)。此外,除非有特定原因,否则您不应使用“no-sandbox”标签。
-
“--user-data-dir”参数似乎也将其设置为空?你为什么要设置那个?
-
我只是没有尝试任何选项,我得到“chrome 无法启动:崩溃”和“DevToolsActivePort 文件不存在”。当我只使用“--no-sandbox”运行时,浏览器会获取页面链接,但页面从不加载任何内容(无法与元素交互)。另外,我认为不需要大多数选项是正确的。当我真的迷路时,我从其他答案中随机收集了一些。谢谢!
-
那里的 chromedriver 是一个非常旧的版本......(之前没有注意到)Eduardo 的回答似乎很到位。
标签: python selenium parsing selenium-webdriver selenium-chromedriver