Довольно часто мне стали попадаться задания на тему парсинга крупных интернет-площадок, не то что бы раньше такого не было, было конечно но не в таких масштабах как сейчас...
В основном я делаю эту статейку для людей которые хотят парсить маркетплейсы и для новичков которые еще не сталкивались с парсингом таких крупных сайтов. Забегу на перед и скажу, что все таки парсинг маркетплейсов это нетривиальная и дорогая задачка, дальше мы с вами обсудим чего же там такого сложного и дорогого в этом деле. Ну и если у вас нет кругленькой суммы денег то в принципе можете даже не пробовать парсить эти сайты.
Ну все поехали!
Люди по разным причинам хотят парсить маркетплейсы, кому то нужна самая низкая цена на товар, кому то нужен список цен, кто-то хочет у себя иметь маркетплейс а не простой интернет-магазин. Причин конечно же много это только некоторые из них. Но мало кто знает с какими сложностями приходиться сталкиваться во время парсинга таких крупных платформ, сейчас я попробуй описать те самые проблемы с которыми лично сталкивался и после этого зарекся не иметь дело с этой не благодарной работой.
Проблемы в парсинге маркетплейсов, на примере яндекс маркета
Первая и самая главная проблема это так называемые поведенческие факторы, во времена когда не было биг-даты и серьезного анализа поведения юзера на этой биг-дате, были хороши, ты мог с малой кровью парсить все что угодно... Но как только появился реал-тайм анализ поведения юзера, парсинг по старинке ушел далеко и надолго. Теперь с учетом этой технологии мне нужно будет прикинуться реальным юзером, а это значит что мне нужно найти и купить какой-нить 2-х годовалый аккаунт яндекса, выделить для него чистый как слеза младенца ip - прокси, с эмулировать поведенческие факторы в браузере при парсинге и парсить. Да и таких аккаунтов + чистых проксей, для нормального парсинга, нужно в районе +100 потому есть некий негласный лимит запросов к маркетплейсу и тебя уверяю что если тебя распознают как бота, то по парсить на этой связке аккаунта+прокси уже по нормальному не получиться, хотя может со временем отпускает я не пробовал....
Вторая и не маловажная проблема это расход ресурсов, есть 2 вида парсинга 1-й это без браузерный вариант, этот вариант тупо видит то что отдает ему сервер и не производит ни какой работы в процессе получения кода. Этот вариант требует минимум оперативной памяти. Но проблема сейчас в том что современные сайты собираются прямо в браузере с помощью javascript, после этого идет еще запросы за данными для собранной страницы. Проблема первого варианта в том что он получает код но не исполняет javascript, соответственно и данные он тоже не получит... Второй вариант предусматривает использование браузера, который исполняет javascript тем самым собирая страничку и запрашивая данные на сервере еще раз. Этот вариант довольно затратен по ресурсам, например вот прямо щас я пишу статью и у меня открыта одна вкладка браузера, потребление памяти в этот момент достигает 500мб. Есть еще так называемый headless режим, это когда браузер запускается в невидимом режиме, тогда потребление памяти существенно снижается, но все равно это много для простого парсинга. Например нам нужно будет арендовать машину для парсинга, мы же не будем на своем компьютере это все делать, держа его включенным сутками... Дак вот месечная стоимость аренды машины вот с такими характеристиками 2 ядра х 2000мгц + 2гига оперативы + белый российский ip в подарок, будет стоить 300р. С учетом того что например для нормального парсинга потребуется например 100 потоков, можно я думаю взять машин 30, расход будет 10-ка в месяц. В зависимости от амбиций заказчика, кол-во потоков естественно должно быть увеличено...
И третья проблема собственно которая меня выворачивает на изнанку, это организация процесса парсинга, и так мы знаем что нам нужны нормальные аккаунты, без них яндекс маркет начинает выдавать на каждый запрос каптчу... У нас есть акки, мы разобрались с машинами, теперь наша задача раскидать код по машинам, и нам нужна будет ведущая машина которая будет управлять потоком парсинга, раскидывая задачи по разным машинам. И обрабатывая ситуация с выдачей каптчи на каждой машине.
Этот подход будет работать, но тут нужно быть очень внимательным, ошибок при парсинге бывает очень много, начиная от долгой загрузки сайта, и заканчивая внезапными изменениями кода на странице доноре. Это тяжелая практически круглосуточная работа, нужно смотреть за всеми этими машинами, что бы каждая работала именно так как задумано, ведь у тебя не будет доступа к браузеру и ты не увидишь что там происходит... Максимум что ты можешь это ментально догадаться почему не работает парсер. Ну и попробовать сменить аккаунт + прокси и посмотреть работает ли... В общем работа эта не благодарная...
Итак какие выводы можно сделать исходя из этой информации?
Парсинг сложен, (стек используемых технологий довольно сложен), затратен (кол-во машин + кол-во аккаунтов + работа программиста), требует уверенных знаний от программиста в этой области. Теперь понимаете почему это все так сложно и дорого... И месяцем работы ни как обойдемся, нужен постоянный мониторинг, тестирование и разработка. Стоимость нормального прогера начинается от +40 тысяч рублей, я бы например взялся за один парсинг яндекс маркета где-то за 50тр в месяц, с учетом того что это долгосрочный проект.
Надеюсь эта статья вас вразумит от бесполезной траты времени и денег. Ну и удачи вам!