![无法使用 PhantomJS 和 selenium 驱动程序从 Debian 服务器获取 HTML](https://linux22.com/image/712897/%E6%97%A0%E6%B3%95%E4%BD%BF%E7%94%A8%20PhantomJS%20%E5%92%8C%20selenium%20%E9%A9%B1%E5%8A%A8%E7%A8%8B%E5%BA%8F%E4%BB%8E%20Debian%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%8E%B7%E5%8F%96%20HTML.png)
我正在开发一个 python 程序,它使用 selenium(webdriver python 绑定)和 PhantomJS(可使用 JavaScript API 编写脚本的无头 WebKit)来加载和与网站交互。
当我在当地的ubuntu 计算机/网络它可以正确加载网站;我可以转储所有 HTML:
打印 webdriver.page_source
当我在服务器,此行仅打印
<html><head></head><body></body></html>
看起来服务器用一个空的HTML 页面。
这个问题发生在两个网站上,但程序在第三个网站上运行正常。这让我认为这是一个网络问题不仅仅是编程问题(?)。服务器由 vps 提供商提供。
从服务器上,我可以 ping 其中一个网站的服务器,该网站的响应是空 HTML,这让我认为我是不是IP 被列入黑名单或被禁止。
以下是 netstat -tulpen 输出(在服务器上运行):
tcp 0 0 0.0.0.0:41207 0.0.0.0:* LISTEN 0 267296 22458/phantomjs
tcp 0 0 0.0.0.0:38457 0.0.0.0:* LISTEN 0 267294 22463/phantomjs
tcp 0 0 0.0.0.0:33667 0.0.0.0:* LISTEN 0 267295 22461/phantomjs
我不知道如何调试这个/了解发生了什么。
更新 :经过一些测试,我制作了一个 JS 脚本,直接使用 PhantomJS 转储页面的 HTML 内容并记录错误。
它给
无法加载地址创建 SSL 上下文时出错(错误:140A90C4:SSL 例程:func(169):原因(196))
所以它可能与 PhantomJS 或阻止它的某些东西有关。
答案1
在确定该错误似乎来自 PhantomJS 后,我尝试了它的选项和参数。
似乎我服务器上运行的版本(1.9.8)对于我需要与之交互的某些网站来说已经损坏。
我在服务器上安装了 2.1.1(我在客户端运行的版本),现在运行良好。