Как стать автором
Обновить

Комментарии 15

На счет Selenium и NodeJS я пробовал два решения это Selenium Web Driver и Webdriver.io. Насколько я помню для обоих еще требуется непосредственно сам Selenium сервер, которым легко можно управлять из NodeJS при помощи вот этого пакета selenium-standalone. Ну и естественно нужна JVM.
Да, всё верно. Оба решения требуют установки Selenium+JVM. Насколько я понимаю, отдельного npm-пакета, содержащего рабочий Selenium, не существует. Технически было бы правильнее портировать Selenium (и драйверы браузеров) на js, но такого, вроде бы, тоже пока нет.
Он JVM не ставит.
Ну это уже Environment. NodeJS кто то же вам устанавливает на сервер. Самое главное что кроме NodeJS и JVM вам больше ничего самому ставить не нужно. Все остальное управляется из JS. В конце концов установку JVM тоже можно запилить автоматически если стоит такая задача.
Не знал, что можно отследить phantomjs из сайта, спасибо.
Сам привык пользоваться связкой python + selenium (phantomjs). Все таки на питон много модулей и много готовых кусков кода. Хотя очень часто встречаются конструкции, где просто вызывается execute_script с javascript-кодом, который нужно выполнить на странице. В случае с nodejs обертками выглядело бы приятнее, так как все было бы унифицировано.
Ну, python, всё-таки, почти на два десятилетия старше. Будет и под Node.js изобилие готового кода.
Мне больше интересно каким образом отслеживается, что клиент обращается из-под PhantomJS? По сути в основе тот же webkit. Плюс есть возможность подменить useragent через settings.userAgent.
Парсим амазон UI уже давно и используем API когда нужно. Сейчас Амазон генерит какой-то токен на клиенте. Воспользовались WD PhantomJs и авторизировальсь без проблем. После 10 успешных входов Амазон начал показывать капчи (наверное даже с использованием рэндомных прокси). Будем использовать DeathbyCaptcha для разгадывания. Используем PHP+Mink+PhantomJs.

Да, когда есть возможность — лучше использовать готовый API, чем страницы скрейпить. Поддерживаю.
Капчи я наблюдал после 10 успешных входов подряд. Через некоторое время опять начинал пускать без капчи. После авторизации с готовыми куками мне капча вообще не попадалась.
Прокси при авторизации тем же аккаунтом, естественно, не помогают, ибо и так понятно, что это тот же юзер :)
Mink — это неплохая штука. Я его не упомянул просто потому что подбирал варианты для Node, а так — да.

Не могли бы вы уточнить что значит: " После авторизации с готовыми куками мне капча вообще не попадалась."?
Когда входим через headless browser у нас и так вроде же куки готовы и сгенерированы амазоном, в этом и смысл использования phantomjs. Чем отличаются ваши куки от наших?
Хм, проверил логи, сейчас все работает нормально и капчи не показывает (логинимся каждые 15 мин). Спасибо за статью, годно!

В боевых условиях я использую phantomjs только на этапе авторизации, чтобы получить куки, сохранить их и использовать пока не устареют. Я делал скрейпинг адресов ревьюеров из топа. Надо было сделать 10000 запросов. Даже через needle это долго, а уж через hedless — тем более. Добавлял в каждый запрос куки, которые в самом начале были получены из phantomjs, а сами запросы делал с помощью needle. Все 10000 прошли без сбоев с одним набором кук. А вот на этапе тестирования авторизации капча вываливалась после десятка-другого запросов.


В принципе, так и должно быть. 10000 авторизованных запросов для Amazon — ерунда, а вот подозрительная активность при авторизации — это может быть подготовка скрейпинга, а может быть и взлом денежного аккаунта.

А какие требования к системе у ZombieJS? Оно javascript выполняет? Можно ли его использовать для постоянно работающего парсера?

Требования к системе… по большому счёту как у jsdom, остальное там по мелочи.


Javascript выполняет. Через evaluate.


Смотря что понимать под "постоянно работающим парсером". Всё, в конечном итоге, сводится к требуемой частоте запросов. Если частота небольшая — можно использовать, если большая — нельзя (как и любой другой hedless). Лично я любые hedless использую только для разовой инициализации сессии, а дальше — честные http-запросы. Обратите внимание, что в этой статье рассматривается только задача получения cookies при запуске скрейпера. Предполагается, что дальше можно будет скрейпить как обычно.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории