Хабрахабр

Правда про парсинг сайтов, или «все интернет-магазины делают это»

В этой статье я постараюсь наиболее просто рассказать о парсинге сайтов и его основных нюансах. Моя компания занимается парсингом сайтов уже более трёх лет и ежедневно мы парсим около 300 сайтов. Я обычно открыто пишу об этом в соц.сетях (плюс мы много чего из итогов парсинга крупнейших магазинов России выкладываем бесплатно — публично), что вызывает бурные обсуждения и неодобрение со стороны пользователей. Забавно после прочтения комментариев заглядывать к себе в личку и читать сообщения с предложениями о сотрудничестве от тех же людей, кто только что осуждал нас в комментариях под постом 🙂 Вся статья будет в формате наиболее часто задаваемых вопросов и честных ответов (материал маркетинговый, не технический).

1. Что такое парсинг?

По определению парсинг – это автоматизированный сбор неструктурированной информации, ее преобразование и выдача в структурированном виде. Довольно безобидно, не правда ли? Однако, общество относится к этому довольно своеобразно, как к подростковой мастурбации – многие этим занимались :), но никто об этом не говорит публично. Более того, парсинг часто осуждается и считается чем-то слегка постыдным. Причина как и в большинстве подобных случаев, в неправильном восприятии.

Пару лет назад в одной из статей в Ведомостях представители “М-видео”, “Связного” и “Ситилинка” даже в открытую говорили об этом в ответ на интерес ФАС (см. Раскрою вам тайну: парсингом занимаются все… По крайней мере, все крупные игроки на рынке. тут).

2. Для чего парсинг нужен?

В первую очередь, целью парсинга является ценовая «разведка», ассортиментный анализ, отслеживание товарных акций. “Кто, что, за сколько и в каких количествах продаёт?” – основные вопросы, на которые парсинг должен ответить. Если говорить более подробно, то парсинг ассортимента конкурентов или того же Яндекс.Маркет отвечает на первые три вопроса.

Однако, такие компании как “Wildberries”, “Lamoda“ и Леруа Мерлен, открыто предоставляют информацию об ежедневных объемах продаж (заказах) или остатках товара, на основе которой не сложно составить общее представлении о продажах (часто слышу мнение, мол эти данные могут искажаться намеренно — возможно, а возможно и нет). С оборотом товара несколько сложней. Чем выше динамика, тем больше оборот. Смотрим, сколько было товара на складе сегодня, завтра, послезавтра и так в течении месяца и вот уже готов график и динамика изменения количества по позиции составлена (оборачиваемость товара фактически).

image

Потенциально возможный способ узнать оборачиваемость товаров с помощью ежедневного анализа остатков сайта Леруа Мерлен.

Но суммарно, если брать, например, Москву — то число не сильно изменится, а в существенные передвижения товара по регионам верится с трудом. Можно, конечно, сослаться на перемещение товаров между точками.

Есть, конечно, компании, которые публикуют информацию в виде много/мало, но даже с этим можно работать, и самые продаваемые позиции легко отслеживаются. С объемами продаж ситуация аналогична. По крайней мере, мы такой анализ делали – интересно получалось. Особенно, если отсечь дешёвые позиции и сфокусироваться исключительно на тех, что представляют наибольшую ценность.

Здесь уже могут иметь место истории в стиле “правовых оттенков серого”. Во-вторых, парсинг используется для получения контента. Парсинг – это всего лишь автоматизированный сбор информации, не более того. Многие зацикливаются на том, что парсинг – это именно воровство контента, хотя это совершенно не так. Потому таким обычно не занимаются (мы в своей работе ограничиваемся сбором ссылок на изображения, не более того… ну иногда просят посчитать количество фотографий, отследить наличие видео на товар и дать ссылку и т.п.). Например, парсинг фотографий, особенно с “водяными знаками” – это чистой воды воровство контента и нарушение авторских прав.

Недавно нам поступил заказ на сбор данных по 50 сайтам крупных онлайн-аптек. Касательно сбора контента, интересней ситуация с описаниями товаров. фактической информацией, т.е. Помимо информации об ассортименте и цене, нас попросили “спарсить” описание лекарственных аппаратов – то самое, что вложено в каждую пачку и является т.н. В результате вместо набора инструкций вручную, заказчикам останется лишь внести небольшие корректировки в шаблоны инструкций, и всё – контент для сайта готов. маловероятно попадает под закон о защите авторских прав. Но да, могут быть и авторские описания лекарств, которые заверены у нотариуса и сделаны специально как своего рода ловушки для воришек контента :).

Здесь уже ситуация не так однозначна с правовой точки зрения. Рассмотрим также сбор описания книг, например, с ОЗОН.РУ или Лабиринт.ру. В любом случае, в данной ситуации придётся сильно «попотеть», чтобы доказать уникальность этого описания. С одной стороны, использование такого описания может нарушать авторское право, особенно если описание каждой карточки с товаром было нотариально заверено (в чём я сильно сомневаюсь — ведь может и не быть заверено, исключение — небольшие ресурсы, которые хотят затаскать по судам воров контента). Некоторые клиенты идут еще дальше — подключают синонимайзеры, которые «на лету» меняют (хорошо или плохо) слова в описании, сохраняя общий смысл.

Здесь преследуется несколько целей. Ещё одно из применений парсинга довольно оригинально – “самопарсинг”. Полчаса работы парсера — и вот у тебя готовая таблица со всеми категориями и данными. Для начала – это отслеживание того, что происходит с наполнением сайта: где битые ссылки, где описания не хватает, дублирование товаров, отсутствие иллюстраций и т.д. “Самопарсинг” можно использовать и для того, чтобы сравнить остатки на сайте со своими складскими остатками (есть и такие заказчики, отслеживают сбои выгрузок на сайт). Удобно! Ребятам так проще было сделать, чем вручную этим заниматься. Ещё одно применение “самопарсинга”, с которым мы столкнулись в работе — это структурирование данных с сайта для выгрузки их на Яндекс Маркет.

Цели тут могут быть как перепродажи баз риелторам или туроператорам, так и откровенный телефонный спам, ретаргетинг и т.п. Также парсятся объявления, например, на ЦИАН-е, Авито и т.д. сразу составляется таблица с телефонами пользователей (несмотря на то, что Авито подменяет телефоны пользователей для защиты и публикует их в виде изображения, от поступающих звонков все равно никуда не уйти). В случае с Авито это особенно явно, т.к.

3. “Что в резюме тебе моем?” или парсинг HH.RU

В последнее время стали актуальны запросы на парсинг Headhunter-а. Правда сначала люди просят продать им “базу Хедхантера”. Но, когда уже понимают, что никакой базы у нас нет и быть не может, мы переходим к разговору о парсинге в их профиле (“под паролем”). Это своеобразное направление парсинга и, честно говоря, нам оно не особо интересно, однако рассказать о нём стоит.

Клиент предоставляет доступ к своему аккаунту и ставит задачу по сбору данных под свои нужды. В чём тонкость? он уже оплатил доступ к базе HH и, подписывая с нами договор, ставит нам задачу на автоматический сбор информации в его интересах и под его аккаунтом, что находится полностью под его ответственностью. Т.е. Потому мы стараемся как можно лучше сымитировать человеческую деятельность при сборе данных. В случае, если HH зафиксирует ненормальную активность, аккаунт будет заблокирован.

А пока это приходится делать человеку “ручками”, к нам идут. Если бы HH (насколько знаю “успешно” проваливший свои эксперименты с API) сам предоставлял (продавал) данные в табличке по регионам, скажем, контакты всех работающих в данный момент директоров по маркетингу в Москве, к нам бы никто и не приходил. Ведь, когда у тебя есть такая таблица, заниматься рекламным спамом – холодными звонками намного удобнее.

И нарушение договора оферты не связано с использованием сайта парсящей стороной. Подчеркну ещё раз, у нас нет базы HH, мы просто собираем данные для каждого клиента под его нужды, его аккаунтом и его ответственностью. Эх, мы бы тоже “спамили”, если б у нас была такая база. Подписывая с нами договор, клиент получает за прогон контакты порядка 450-ти ЛПР-ов, которые мы положим к нему на сервер, и дальше уже его отдел продаж сам решит, что с этим делать. Шучу 🙂

А вот парсинг открытых ресурсов – это другое дело. Хотя, лично я считаю, что нет перспектив в парсинге под паролем. Это более перспективно. Ты один раз настроил всё и парсишь постоянно, потом перепродаешь доступ ко всем собранным данным.

4. Парсинг вообще законен?

В российском законодательстве нет статьи, запрещающей парсинг. Запрещен взлом, DDOS, воровство авторского контента, а парсинг – это ни то, ни другое, не третье и, соответственно, он не запрещен.

Однако, это совершенно разные вещи, и при парсинге мы, напротив, стараемся как можно меньше нагружать целевой сайт и не навредить бизнесу. Некоторые люди воспринимают парсинг как DDOS-атаку и относятся к нему с сомнением. Как в случае со здоровым паразитизмом – мы не хотим, чтобы бизнес «отбросил копыта», иначе нам не на чем будет “паразитировать”.

На таких сайтах посещаемость, как правило, несколько миллионов в месяц, может даже и больше. Обычно просят парсить крупные сайты, из топа 300-500 сайтов России. Соответственно, и намека на DDOS-атаку в наших действиях нет. И на таком фоне парсинг одного товара в секунду или в две практически незаметен (нет смысла чаще парсить, 1-2 секунды не товар — это оптимальная скорость для крупных сайтов). Очень редко люди просят чтобы мы обновляли, например, весь сайт БЕРУ.РУ за сутки — это, скажем прямо, перебор и слишком высокая нагрузка на сайт… обычно занимает 3-4 дня.

Таким образом, под статью об авторском праве могут попасть лишь действия с уже собранной информацией, т.е. Напомню, что парсинг – это лишь сбор того, что мы можем своими глазами увидеть на сайте и скопировать к себе руками. Просто человек это делает долго медленно и с ошибками, а парсер – быстро и не ошибается. действия самого заказчика. Человеку просто не под силу такая задача, и парсинг – единственный выход. Что же делать, когда речь касается сбора данных с AliExpress или Wildberies?

Там в открытом доступе вся информация, но мы (на всякий случай) отказались. Правда, недавно попросили парсить сайт государственной организации – суда, если не ошибаюсь. 🙂

5. “Вы чего нас парсите, мы же заказчик” или в чем разница между парсингом и мониторингом цен?

Мониторинг цен – одно из наиболее востребованных направлений применения парсинга. Но с ним не всё так просто – поработать в данном случае придётся не только нам, но и самому клиенту.

Это необходимо для получения схожих таблиц с товарами и ценами, которые мы сможем обновлять автоматически. При заказе на мониторинг цен мы сразу предупреждаем, что будем парсить не только конкурентов, но и заказчика. Некоторые позиции с разных сайтов мы можем сопоставить автоматически, но, к сожалению, на данный момент “машины” еще не так хороши, чтобы сделать это гарантированно без ошибок, и лучше человека (например, работающего удаленно на полставки сотрудника из регионов) это никто не сделает. Однако, сами по себе такие данные не несут ценность, пока они не связаны между собой (так называемый матчинг товаров).

Но, к сожалению, так это не так, и даже названия продуктов разные компании пишут по-разному. Если бы все выводили штрих-код на сайте, то вообще было бы замечательно, и мы могли бы делать все “связки” автоматически.

При наличии связок мы уже можем обновлять такие таблицы автоматически. Хорошо, что такую работу необходимо провести единожды, а потом периодически перепроверять и вносить небольшие корректировки, если требуется. И оператор из региона легко сможет выполнять такую работу за деньги порядка 10 000 рублей в месяц. К тому же, обычно людям не требуется мониторить цены на всё: есть условно 3-5 тысяч позиций, которые в топе, а мелочь не представляет интерес.

Так мониторинг цен легче всего внедрить в ежедневную деятельность своих аналитиков. Самый удачный и правильный кейс в данном случае, на мой взгляд, загружать полученный прайс лист конкурентов сразу к себе в 1С-ку (или другую ERP систему) и там уже выполнять сопоставление. А без анализа такой парсинг никому и не нужен.

6. Как защититься от парсинга?

Да никак. И стоит ли вообще защищаться от парсинга? Я бы не стал. Работающей 100% защиты всё равно нет (точнее, мы еще не встречали), так что особого смысла пытаться защититься я не вижу. Лучшая защита от парсинга – это просто выложить готовую таблицу на сайте и написать – берите отсюда, обновляем раз в пару дней. Если люди так будут делать, то у нас хлеба не будет.

Я его напрямую спросил, почему они так не делают. К слову говоря, недавно созванивались с IT директором крупной сети – они хотели протестировать свою защиту от парсинга. Как технический специалист он прекрасно понимает, что никакая защита от парсинга не спасёт, лишь отпугнет дилетантов; а вот компании, которые зарабатывают на парсинге, вполне могут позволить себе исследовательскую деятельность в этом направлении – долго и мучительно разбираться в новой защите, и в итоге ее обойти…

Так вот, оказалось, что отдел маркетинга не готов к такому: “Зачем нам упрощать жизнь конкурентам?” Казалось бы, логично, но… В результате компания будет тратить деньги на защиту, которая не поможет, а паразитная нагрузка на сайт – останется. Как правило, все используют однотипные защиты, и такое исследование пригодится еще не раз. Хотя, справедливости ради, стоит отметить, что от «студентов» изучающих python и парсящих все что «шевелится» вполне может помочь.

Только все хотят, чтобы “Яндекс” и “Google” индексировали их сайты по понятным причинам, и никто не хочет, чтобы их парсили 🙂 Кстати, и “Яндекс”, и “Google” занимаются парсингом: они заходят на сайт и индексируют его – собирают информацию.

7. “Я тут бесплатно поискал...” или история про авиабилеты

Однажды к нам обратились с интересным заказом на тестовый парсинг. Компания занимается авиабилетами и им были интересны цены конкурентов на пару самых популярных направлений. Задача оказалась нетривиальной, т.к. пришлось повозиться с подстановкой и сопоставлением рейсов. Занимательным оказалось то, что цены у “Onetwotrip”, “Aviasales” и “Skyscanner” на одни и те же рейсы немного отличаются (разброс около 5-7%).

К моему удивлению дискуссия под постом оказалась довольно агрессивной, и я не сразу понял почему. Проект показался мне очень интересным, и я выложил пост об этом в соц.сетях. Выяснилось, что запросы о ценах на билеты для таких компаний платные, т.к. Затем мне написал гендиректор одной из компаний лидера рынка продажи билетов в России, и ситуация прояснилась. И, помимо паразитной нагрузки, парсинг представляет для них еще и финансовую. они берут информацию с международных платных сервисов.

В любом случае, никто же с вас не требует оплаты, если вы подыскиваете себе лично билеты на этих сервисах, а запросов обычные люди тоже делают немало пока перебирают разные варианты… В общем тут такая бизнес-дилемма 🙂

8. “Рецепты шеф-парсера”. или как мы работаем?

Думаю, для большего понимания всех аспектов парсинга стоит приоткрыть завесу нашей “внутренней кухни”.

Иногда клиенты связываются с нами сами, а иногда звоним мы. Всё начинается с заказа. В этом случае нам приходится парсить не только конкурентов, но и самого заказчика. Особенно удачно получается с заказами на мониторинг цен. Сначала реакция очень негативная, но проходит пара дней, эмоции спадают, и заказчики сами перезванивают, говоря: “Чёрт с ним! Поэтому мы порой звоним тем, кого так или иначе парсим, и в открытую об этом говорим, предлагая свои услуги – работа ведь нами уже и так выполняется. Кого вы ещё парсите?”

Сначала негативные, ведь он схож с подглядыванием в замочную скважину. Парсинг у ОЧЕНЬ многих владельцев посещаемых ресурсов вызывает эмоции. Бизнесмены – умные люди. Затем перерастает в интерес, а потом и в осознание необходимости. Когда эмоции сходят на нет и остаётся холодный расчёт, всегда возникает вопрос: “А, может, мы где-то недоработали, и нам тоже это нужно?”

На данный момент мы парсим порядка 300 сайтов в день. Благодаря этим эмоциям мы довольно активно растём и развиваемся. Сложность заключается в том, что некоторые защищаются. Обычно у нас заказывают по 8-15 сайтов, а парсинг одного стоит от 5 до 9 тысяч рублей в месяц, в зависимости от сложности подключения, ведь каждый сайт приходится подключать индивидуально (уходит где-то 4-5 часов на ресурс). Борьба идёт не столько с парсингом, сколько с некой паразитной нагрузкой, которая не приносит им прибыль, но иногда приходится повозиться.

В любом случае ВСЁ ПАРСИТСЯ, даже если цена на товар публикуется на сайте как картинка 🙂 Желающим попробовать свои силы в парсинге, рекомендую потренироваться на сайте «Аптеки Столички» и спарсить цены.

image

Мы так делаем по крайне мере. Интернет- магазин сети аптек «Столички» — цены пишутся внутренним шрифтом и чтобы их спарсить одним из решений будет формирование картинки и ее распознавание.

Обычно мы размещаем их на собственном облаке, постоянно обновляя, и предоставляем клиенту доступ к ним по API. Собранные данные передаются клиенту. Такие сбои возникают при установки новой защиты или блокировки, а решаются с помощью исследований и прокси соответственно. Если с данными вдруг становится что-то не так (а это бывает редко – раз в 3-4 месяца), нам сразу звонят-пишут, и мы стараемся устранить проблему как можно быстрее. Но всё решаемо, и заказчики обычно относятся к таким проблемам с пониманием. В другом случае, когда на сайте что-то меняется, бот просто перестает понимать, где что находится, и нашему программисту приходится заново его настраивать.

Хоть в парсинге и нет ничего предосудительного, но многие стесняются. Отмечу, что в нашем деле личность заказчика никогда не разглашается – мы относимся к этому достаточно трепетно, да и пункты в договоре о неразглашении никто не отменял.

Собственно, подводя итог- если вы растущий бизнес, торгуете широко распространенными товарами или работаете в быстро меняющейся среде (такой, как найм персонала или предложение специфических услуг для определенной категории авторов объявлений, резюме и содержимого других“досок объявлений” в Интернете), то рано или поздно столкнетесь с парсингом (как заказчик или как мишень).

S.: если статья понравится, будем писать уже про тех.сторону дела — как обходим защиту, какие мощности используем, на чем написано (спойлер .net) и т.п. P.

Максим Кульгин, xmldatafeed.com

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть