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

Другие вопросы по тегам