Я пытаюсь запустить 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 нет активных правил.
Есть какие-нибудь намеки на то, что может быть причиной этого? Или что мне делать, чтобы получить более подробную информацию о проблеме?
Спасибо.
В этом примере сценарий 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