【问题标题】:PhantomJS from selenium - Python来自硒的 PhantomJS - Python
【发布时间】:2016-05-30 10:40:47
【问题描述】:

我正在尝试在 Python 中使用 PhantomJS(在 Windows 中)和 Selenium 来进行一些网页抓取。
我已经从网站下载了最新的 PhantomJS 版本,然后解压缩。之后我试过了

from selenium import webdriver
browser = webdriver.PhantomJS()

反应是

WebDriverException: 'phantomjs' executable needs to be in PATH.

然后我尝试添加路径,比如

browser = webdriver.PhantomJS('path_to/phantomjs.exe')

我还尝试在路径前添加一个“r”。响应是 HTML 中的一个 exxeption:

WebDriverException: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Notification: Gateway Timeout</title>

<style type="text/css">
body {
  font-family: Arial, Helvetica, sans-serif;
  font-size: 14px;
  color:#333333;
  background-color: #ffffff;
}
h1 {
  font-size: 18px;
  font-weight: bold;
  text-decoration: none;
  padding-top: 0px;
  color: #2970A6;
}
a:link {
    color: #2970A6;
  text-decoration: none;
}
a:hover {
    color: #2970A6;
  text-decoration: underline;
}
p.buttonlink {
  margin-bottom: 24px;
}
.copyright {
  font-size: 12px;
  color: #666666;
  margin: 5px 5px 0px 30px;

}
.details {
  font-size: 14px;
  color: #969696;
  border: none;
  padding: 20px 20px 20px 20px;
  margin: 0px 10px 10px 35px;
}

.shadow {
  border: 3px solid #9f9f9f;
  padding: 10px 25px 10px 25px;
  margin: 10px 35px 0px 30px;
  background-color: #ffffff;
  width: 600px;

  -moz-box-shadow: 3px 3px 3px #cccccc;
  -webkit-box-shadow: 3px 3px 3px #cccccc;
  box-shadow: 3px 3px 3px #cccccc;
  /* For IE 8 */
  -ms-filter: "progid:DXImageTransform.Microsoft.Shadow(Strength=5, Direction=135, Color='cccccc')";
  /* For IE 5.5 - 7 */
  filter: progid:DXImageTransform.Microsoft.Shadow(Strength=5, Direction=135, Color='cccccc');
}
.logo {
  border: none;
  margin: 5px 5px 0px 30px;
}
</style>

</head>

<body>
<div class="logo"></div><p>&nbsp;</p>
<div class="shadow">
<h1>This Page Cannot Be Displayed</h1>


<p>
The system cannot communicate with the external server (&nbsp;127.0.0.1&nbsp;).
The Internet server may be busy, may be permanently down, or may be
unreachable because of network problems.
</p>

<p>
Please check the spelling of the Internet address entered.
If it is correct, try this request later.
</p>



<p>
If you have questions, please contact
your corporate network administrator 
and provide the codes shown below.
</p>

</div>

<div class="details"><p>
Date: Mon, 30 May 2016 12:30:14 CEST<br />
Username: <br />
Source IP: 10.202.210.98<br />
URL: POST http://127.0.0.1/wd/hub/session<br />
Category: Uncategorized URLs<br />
Reason: UNKNOWN<br />
Notification: GATEWAY_TIMEOUT
</p></div>
</body>
</html>

我已将此代码打开到 Chrome 会话中,它会打开我公司的防火墙页面。消息是“系统无法与外部服务器(127.0.0.1)通信。”。我可以使用 Chrome 或 Firefox 驱动程序进行 webscrape,但我在使用 PhantomJS 时遇到了这个问题。
你能帮帮我吗?

【问题讨论】:

  • 我还发现使用的 URL 是 POST 127.0.0.1/wd/hub/session。有没有办法改变这个?这显然是公司防火墙的问题。

标签: python selenium phantomjs


【解决方案1】:

尝试使用下面安装的绝对路径,并为“127.0.0.1”设置“NO_PROXY”环境

os.environ['NO_PROXY'] = '127.0.0.1'
driver = webdriver.PhantomJS(
 executable_path=r'C:\Python\Python35-32\Lib\site-packages\phantomjs-2.1.1-windows\bin\phantomjs')

【讨论】:

  • 不,同样的问题。
【解决方案2】:

我也在尝试让它在 Windows 下工作......

我正在对 WebDriver 进行超类化,并且在初始化超类时,我将可执行文件所在的 ABSOLUTE 路径传递给 webdriver 的 __init__ 方法。

这让我更进一步 - 现在我看到了

Exception WebDriverException: Message: 'phantomjs' executable may have wrong permissions.

这给我的印象是我走在正确的轨道上......这表明你可以将可执行文件所在的路径传递给 webdriver 对象的构造函数(作为一个简单的字符串)。

【讨论】:

    猜你喜欢
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多