当前位置: 首页 > 面试题库 >

selenium无法连接到GhostDriver(但仅在某些情况下)

禄奇希
2023-03-14
问题内容

我已经在带有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}]}

我确定必须有一些丢失的文件,某些情况下必须使用该文件。因此,我决定从源头开始构建,并且现在可以正常工作。



 类似资料:
  • 我有以下代码: 当我用java 8运行代码时,它可以工作。但对于java 11,它抛出了一个例外:java。时间总体安排DateTimeParseException:无法在索引3处分析文本“20 Janeiro 2021 00:26”。 我也有类似的情况,我要转换的字符串中有一个区域,代码是: 如果使用java 8运行,它仍然有效,但使用java 11则不行。异常是:java.time.forma

  • 当连接到rabbitmq队列服务器失败时,我正在尝试实现重新连接机制。此代码仅用于消费消息,下面是我的代码(channel Init函数负责初始化消费者并绑定到队列)。 连接失败时,我成功收到提示“[AMQP] 重新连接”,但在该队列未重新连接后,控制台日志中没有其他提示。 请帮忙。

  • 我在facebook php webdriver上工作,我在Ubuntu上工作,selenium独立服务器与webdriver库在同一个目录下。 当我执行以下代码时,我使用本地ip地址192.168.x.x连接到linux 我经常得到这个错误“未捕获的异常”UnhandledWebDriverError“,消息是”无法在45000 ms后连接到端口7055上的主机127.0.0.1“。Firefo

  • 问题内容: 我使用 CMake* (3.4.1)根据 Boost 库构建一个C ++项目。宿主平台是 Linux ,目标是宿主和 交叉构建 Android NDK。 * 我只使用Boost头文件,而我只是下载/提取了boost文件夹(并且我没有目录)。 在我的文件中,我这样声明对Boost的依赖关系: 我将构建配置如下: 这实际上 可以 像我的 本机 版本一样工作。 现在,当我以完全相同的方式(仅

  • 问题内容: 鉴于以下课程 当我们验证它(例如,使用@Valid)并且如果Website.url不遵守我的自定义@ValidUrl约束时,我们将遇到约束冲突(例如,“ URL不可访问”)。 我想知道如果用户愿意,是否可以忽略该验证。 脚步: 第一次验证表格 引发约束冲突并将其显示给用户 用户选择“我知道,仍然添加”,然后重新提交 第二次验证表单,验证@ValidUrl以外的所有内容 问题答案: 您可

  • 问题内容: 我想创建一个触发器,以防止在出生日期(列之一)将来的时候插入。我有这个: 如何取消if语句中的插入? 问题答案: 基于这一点,我不确定是否可以这样做。 MySQL当前的触发器实现中不支持自愿引发异常并中止生成触发器的语句。 我发现的解决方法是编写一个BEFORE触发器,以将表中的not-NULL列之一设置为NULL,从而违反了其NOT NULL约束。这导致产生触发器的语句被中止。