Комментарии 15
Сам привык пользоваться связкой python + selenium (phantomjs). Все таки на питон много модулей и много готовых кусков кода. Хотя очень часто встречаются конструкции, где просто вызывается execute_script с javascript-кодом, который нужно выполнить на странице. В случае с nodejs обертками выглядело бы приятнее, так как все было бы унифицировано.
Да, когда есть возможность — лучше использовать готовый API, чем страницы скрейпить. Поддерживаю.
Капчи я наблюдал после 10 успешных входов подряд. Через некоторое время опять начинал пускать без капчи. После авторизации с готовыми куками мне капча вообще не попадалась.
Прокси при авторизации тем же аккаунтом, естественно, не помогают, ибо и так понятно, что это тот же юзер :)
Mink — это неплохая штука. Я его не упомянул просто потому что подбирал варианты для Node, а так — да.
Когда входим через headless browser у нас и так вроде же куки готовы и сгенерированы амазоном, в этом и смысл использования phantomjs. Чем отличаются ваши куки от наших?
Хм, проверил логи, сейчас все работает нормально и капчи не показывает (логинимся каждые 15 мин). Спасибо за статью, годно!
В боевых условиях я использую phantomjs только на этапе авторизации, чтобы получить куки, сохранить их и использовать пока не устареют. Я делал скрейпинг адресов ревьюеров из топа. Надо было сделать 10000 запросов. Даже через needle это долго, а уж через hedless — тем более. Добавлял в каждый запрос куки, которые в самом начале были получены из phantomjs, а сами запросы делал с помощью needle. Все 10000 прошли без сбоев с одним набором кук. А вот на этапе тестирования авторизации капча вываливалась после десятка-другого запросов.
В принципе, так и должно быть. 10000 авторизованных запросов для Amazon — ерунда, а вот подозрительная активность при авторизации — это может быть подготовка скрейпинга, а может быть и взлом денежного аккаунта.
Требования к системе… по большому счёту как у jsdom, остальное там по мелочи.
Javascript выполняет. Через evaluate.
Смотря что понимать под "постоянно работающим парсером". Всё, в конечном итоге, сводится к требуемой частоте запросов. Если частота небольшая — можно использовать, если большая — нельзя (как и любой другой hedless). Лично я любые hedless использую только для разовой инициализации сессии, а дальше — честные http-запросы. Обратите внимание, что в этой статье рассматривается только задача получения cookies при запуске скрейпера. Предполагается, что дальше можно будет скрейпить как обычно.
Web scraping на Node.js и защита от ботов