我正在尝试使用 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