Назад | Перейти на главную страницу

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 нет активных правил.

Есть какие-нибудь намеки на то, что может быть причиной этого? Или что мне делать, чтобы получить более подробную информацию о проблеме?

Спасибо.

В этом примере сценарий 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