前言
今天在配置 Python 爬虫环境时遇到了一个关于 chromedriver 的问题,按照说明安装好后,执行下面程序出现了以下问题
- 程序
from selenium import webdriver
driver=webdriver.Chrome()
driver.get("www.baidu.com")
- 遇到的问题
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\SoftWare\Anaconda\lib\site-packages\selenium\webdriver\chrome\webdriv
er.py", line 62, in __init__
self.service.start()
File "C:\SoftWare\Anaconda\lib\site-packages\selenium\webdriver\common\service
.py", line 102, in start
raise WebDriverException("Can not connect to the Service %s" % self.path)
selenium.common.exceptions.WebDriverException: Message: Can not connect to the S
ervice chromedriver
大概的意思就是不能连接到浏览器,随即对一些电脑配置文件进行检查,如到系统中 hosts 文件中检查是否含有 127.0.0.1 localhost
这一句,需要注意的是如果有这么一句 # 127.0.0.1 localhost
,请删除 # ,然后继续执行程序。
如果依旧遇到错误,这时候需要检查你下载的 chromedriver.exe
文件是否添加到环境变量中,如果没有,则需要添加,最简单的方式就是把它复制到 Chrome 根目录下或者你安装的 Python 文件中。当然我遇到了一个更狗血的错误,就是开启系统防火墙把 Python 对浏览器的访问限制了,如果电脑开启了防火墙请记得先关闭下。
如果出现版本兼容的问题,如低版本的 chromedriver 不能支持高版本的 Chrome 浏览器,则需要去查下官方说明。
然后我顺利的通过 Python 打开了 Chrome 浏览器,但这时执行 driver.get("www.baidu.com")
时有出现以下问题
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\SoftWare\Anaconda\lib\site-packages\selenium\webdriver\remote\webdriv
er.py", line 320, in get
self.execute(Command.GET, {'url': url})
File "C:\SoftWare\Anaconda\lib\site-packages\selenium\webdriver\remote\webdriv
er.py", line 308, in execute
self.error_handler.check_response(response)
File "C:\SoftWare\Anaconda\lib\site-packages\selenium\webdriver\remote\errorha
ndler.py", line 194, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: unknown error: unhandled
inspector error: {"code":-32000,"message":"Cannot navigate to invalid URL"}
(Session info: chrome=60.0.3112.113)
(Driver info: chromedriver=2.33.506120 (e3e53437346286c0bc2d2dc9aa4915ba81d902
3f),platform=Windows NT 6.1.7601 SP1 x86_64)
个人觉得这个问题最关键的一句就是这个 inspector error: {"code":-32000,"message":"Cannot navigate to invalid URL"}
查看了几篇文档,发现别人的都能执行,而自己的不能执行,最后在
StackOverflow 这个网站找到结果,需要将代码写成这种形式 driver.get("http://www.baidu.com")
最后成功实现功能。
搞了两个小时,有时候虽然只是一些小问题,但卡住了那也是蛮烦的一件事,不过经常遇到问题再去解决问题也能提高能力,最后还是给大家推荐这个网站,有问题可以去查,虽然是英文版,但是看多了也就习惯了。