我在 Python 中使用 Selenium 和 PhantomJS 设置了一个简单的网页抓取脚本。我总共要抓取大约 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)