代码运行 MAC 没问题, 去跑 ubuntu 报错了,找不到办法(爬虫问题,selenuim 调用)

2016-08-02 12:43:14 +08:00
 redhatping

   driver = webdriver.Firefox(firefox_profile=ffprofile)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 65, in __init__
    self.service.start()
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/common/service.py", line 71, in start
    os.path.basename(self.path), self.start_error_message)
selenium.common.exceptions.WebDriverException: Message: 'geckodriver' executable needs to be in PATH.

Exception AttributeError: "'Service' object has no attribute 'process'" in <bound method Service.__del__ of <selenium.webdriver.firefox.service.Service object at 0x3359310>> ignored

报错信息如上..

环境: Ubuntu sever

Selenium : 3.0 ( pip install -U selenium)

Firefox ( usr/bin , sudo apt-get update )

报错原因; MAC OS 执行没有问题, 换了环境去了 Ubuntu 出错了. 努力 GOOGLE 没找到办法, 谢谢大家了.

6342 次点击
所在节点    Python
29 条回复
ykrl089
2016-08-02 12:52:52 +08:00
查下文件或者路径的大小写问题
redhatping
2016-08-02 12:54:00 +08:00
@ykrl089 没明白.
xchange
2016-08-02 13:20:34 +08:00
提示里面不是说了'geckodriver' executable needs to be in PATH 吗?
redhatping
2016-08-02 13:22:44 +08:00
@xchange firefox 在 usr/bin 下面啊... 么有问题啊 echo $PATH /usr/bin: 也有啊..
Garantion
2016-08-02 13:24:07 +08:00
你确定是 ubuntu server ?我记得我当时用 Selenium 的时候没有图形界面是无法运行的。
redhatping
2016-08-02 13:40:45 +08:00
@Garantion 我安装了图形界面啊.. xfce
ykrl089
2016-08-02 13:49:41 +08:00
@redhatping mac 系统文件名和路径不区分大小写, linux 一般是区分大小写的,
也就是说在 linux 下 geckodriver != Geckodriver
你自己看下文件名和路径名有没有错误
redhatping
2016-08-02 14:00:01 +08:00
@ykrl089 这么说 , 我运行以下代码就有问题了
``python

from selenium import webdriver
driver = webdriver.Firefox()

```

就会报错了...

这个不可能是大小写出现的吧.
ykrl089
2016-08-02 14:14:26 +08:00
@redhatping 你看下 /webdriver.pyservice.py 的 65 行和 71 行是什么呗
eclipselu
2016-08-02 14:18:37 +08:00
看起来是 geckodriver 没在 PATH 里,实在不行换个别的浏览器试试看?比如 ChromeDriver ,或者 PhantomJS
redhatping
2016-08-02 14:27:55 +08:00
@eclipselu 对啊, 但是 firefox 不是默认的嘛.. geckodriiver 也在 /usr/bin/firefox (firefox)
redhatping
2016-08-02 14:38:03 +08:00
@ykrl089
#65 self.service.start()
#71 os.path.basename(self.path), self.start_error_message


这两个判断, 都是系统路径的问题. 但是我 firefox 确实已经安装了 . 就在 usr/bin 里面
mrwangrj
2016-08-02 14:49:36 +08:00
好巧今早遇到了长得差不多的问题,我这边是用的 PhantomJS ,换了个环境发现没有在 PATH 里
redhatping
2016-08-02 14:58:21 +08:00
@mrwangrj 你是怎么解决的. 我$PATH 也在 USR/BIN 里面啊..
mrwangrj
2016-08-02 15:09:36 +08:00
@redhatping 是不是需要 /usr/bin/firefox 搞到$PATH 里?
eclipselu
2016-08-02 17:12:15 +08:00
@redhatping 不太清楚 Ubuntu 下面是怎么样,好像我当时用的时候是单独装了一个 geckodriver
https://github.com/mozilla/geckodriver 。就是 Firefox 和 geckodriver 都要有。
gimp
2016-08-02 17:20:10 +08:00
看你的 Firefox 版本,如果太高了会报错, selenium 对新版火狐支持不好

你也可以安装个 chrome ,然后下载个 chrome driver 来用( http://chromedriver.storage.googleapis.com/index.html?path=2.22/)
redhatping
2016-08-02 17:27:51 +08:00
@gimp MAC 我也是新版本, 似乎没撒问题. 就是叫降低版本看看?
redhatping
2016-08-02 17:41:18 +08:00
@eclipselu 我试试
IMRES
2016-08-02 17:49:32 +08:00
检查`which geckodriver`得到的目录是否在"$PATH"中

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/296540

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX