我已经在带有Selenium和PhantomJS的Python中设置了一个简单的webscraping脚本。我总共要抓取大约200个URL。脚本最初运行良好,然后运行了大约20-30个URL(它可能会更多/更少,因为它失败时似乎是随机的,并且与任何特定的URL不相关),我在python中收到以下错误:
selenium.common.exceptions.WebDriverException: Message: 'Can not connect to GhostDriver'
还有我的ghostdriver.log:
PhantomJS is launching GhostDriver... [ERROR - 2014-07-04T17:27:37.519Z] GhostDriver - main.fail - {"message":"Could not start Ghost Driver","line":82,"sourceId":140692115795456,"sourceURL":":/ghostdriver/main.js","stack":"Error: Could not start Ghost Driver\n at :/ghostdriver/main.js:82","stackArray":[{"sourceURL":":/ghostdriver/main.js","line":82}]}
我进行了搜索,关于SO的大多数问题似乎都是他们甚至无法运行单个URL。我发现脚本中间错误发生在哪里的唯一另一个问题是这个问题,答案是将phantomjs升级到最新版本。另一个答案只是说要再次尝试该URL,但由于URL可能再次失败,因此似乎不是一个好的解决方案。
我在python 2.7.6的Linux Mint 17上运行phantomjs版本1.9.7和selenium版本2.42.1
for url in ['example.com/1/', 'example.com/2/', 'example.com/3/', .. , ..]: user_agent = 'Chrome' dcap = dict(DesiredCapabilities.PHANTOMJS) dcap['phantomjs.page.settings.userAgent'] = user_agent driver = webdriver.PhantomJS(executable_path='/usr/bin/phantomjs', desired_capabilities=dcap) driver.get(url)
我有同样的问题要解决, 我从源代码安装了phantomjs 。
For Linux (Debian): sudo apt-get update sudo apt-get install build-essential chrpath git-core libssl-dev libfontconfig1-dev libxft-dev git clone git://github.com/ariya/phantomjs.git cd phantomjs git checkout 1.9 ./build.sh For Mac os: git clone git://github.com/ariya/phantomjs.git cd phantomjs git checkout 1.9 ./build.sh
对于其他系统,请检查以下链接 http://phantomjs.org/build.html
Optional : cd bin chmod +x phantomjs cp phantomjs /usr/bin/
我想通了,因为当我阅读我的ghostdriver.log文件时,它说。
[ERROR - 2014-09-04T19:33:30.842Z] GhostDriver - main.fail - {"message":"Could not start Ghost Driver","line":82,"sourceId":140145669488128,"sourceURL":":/ghostdriver/main.js","stack":"Error: Could not start Ghost Driver\n at :/ghostdriver/main.js:82","stackArray":[{"sourceURL":":/ghostdriver/main.js","line":82}]}
我确定必须有一些丢失的文件,某些情况下必须使用该文件。因此,我决定从源头开始构建,并且现在可以正常工作。