Phantomjs не работает на Amazon EC2 (Ubuntu 12.04 AMI)
Я пытаюсь запустить Phantomjs (особенно Casperjs) на Amazon EC2, используя последнее изображение Ubuntu (12.4). Чтобы быть уверенным, я попробовал с двумя разными сборками. Один скомпилирован на моей машине разработчика (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 с тех пор обновил интерфейс своего сайта.
Формат 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