Phantomjs 在 Amazon EC2(Ubuntu 12.04 AMI)上失败

Phantomjs 在 Amazon EC2(Ubuntu 12.04 AMI)上失败

我正在尝试使用 Ubuntu 最新映像 (12.4) 在 Amazon EC2 上运行 Phantomjs (特别是 Casperjs)。为确保万无一失,我尝试了两种不同的版本。一种在我的开发机器上编译 (Phantomjs 1.6.0),另一种在 EC2 本身中构建 (Phantomjs 1.6.1)。

两者的结果相同:没有建立连接。

使用比萨例子:

我可以

wget 'http://lite.yelp.com/search?find_desc=pizza&find_loc=94040&find_submit=Search'

我得到了请求的页面,但是当我运行

phantomjs examples/pizza.js

我明白了

Unable to access network.

iptables 上没有活动规则。

有什么线索可以解释为什么会出现这种情况吗?或者我应该怎么做才能获得有关该问题的更多详细信息?

谢谢。

答案1

在该示例中,如果请求未返回“成功”,Phantom 脚本将抛出“无法访问网络”。事实上,对示例中的 URL 的请求将返回 301“永久移动”并重定向回 yelp.com/search。我认为该示例已经过时,Yelp 已经更新了其网站 UI。

URL 格式现在是:http://www.yelp.com/search#find_desc=pizza&find_loc=San+Francisco&show_filters=1

现在地址位于一个<address>元素中。

将 url 和选择器更新为类似以下内容:

document.querySelectorAll('address')

此外,您链接的示例脚本适用于 Phantom 1.2。以下内容已弃用:

var page = new WebPage();

在新版本中替换为以下内容:

var page = require('webpage').create();

Phantom 1.6 的示例相同。记得更新 url 和选择器:http://code.google.com/p/phantomjs/source/browse/examples/pizza.js?name=1.6

相关内容