Паттерны парсинга

и критерии выбора парсера

Паттерны парсинга

Пока одни майнят крипту, другие добывают реальные данные. Эти данные обогащаются, из них извлекают информацию и затем находят в ней знания.

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

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

Парсер <b><a href="https://api.vc.ru/v2.8/redirect?to=https%3A%2F%2Frobastik.ru%2F&postId=308273" rel="nofollow noreferrer noopener" target="_blank">Робастик</a></b> добавляет меню в Excel
Парсер Робастик добавляет меню в Excel

Другое дело - когда собирается база контактных данных для спама или один крупный интернет-магазин следит за другим. В таких случаях требуется за один раз загрузить всю товарную матрицу магазина или все доступные контактные данные. Это могут быть сотни тысяч или миллионов страниц. В случае интернет-магазина такое нужно повторять каждый день.

Размер имеет значение

Первый критерий выбора парсера - масштаб задачи

На одном полюсе этого критерия - локальный рынок и его сегменты, на другом - рынок страны и более крупные категории.

Если анализ локального рынка соответствует масштабу внимания одного специалиста, то анализ всей товарной матрицы нескольких крупных конкурентов не может обойтись без привлечения уже целой команды. Соответственно и инструмент парсинга для использования одним человеком может заметно отличаться от инструмента, которым пользуется вся команда.

В то же время, командную работу можно декомпозировать: каждый участник команды собирает относительно небольшие данные по своему региону, а для получения "взгляда сверху" данные всех участников команды просто объединяются.

Второе измерение масштаба - время.

Во-первых, одноразовая задача или парсинг необходим регулярно. Например, сбор контактов - одноразовая задача, а анализ рынка - регулярная.

Во-вторых, есть ли необходимость скорости и данные нужно получать как можно быстрее или наоборот, нет никакой спешки. Пример: если анализ рынка проводится раз в месяц, то нет необходимости переплачивать за получение всех данных за 10 минут.

Цена ошибки

Второй критерий - ответственность

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

В любом случае, не получится один раз сделать программу для парсинга популярного сайта и пользоваться ей в неизменном виде пару-тройку лет. Одни сайты меняют представление данных чаще, другие реже, но в любом случае IT является самой динамичной отраслью.

Попросту говоря, программу для парсинга нужно постоянно подправлять в соответствии с изменениями на сайте, даже если эти изменения не видны на экране.

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

Выявление сбоя парсинга можно поручить стороннему сервису или специально назначенному сотруднику. При этом само определение того, что считать сбоем, может требовать определенного уровня компетенции. Например, бесплатный парсер robastik.ru по умолчанию загружает в Excel 49 колонок данных с сайта ЦИАН и отсутствие данных в какой из этих колонок является сбоем - может быть нетривиальным вопросом для стороннего сервиса.

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

Технологичность - критерий?

В облаке или на десктопе? Все выглядит довольно очевидно: если данные используются для анализа в Excel, то избыточно городить облачную инфраструктуру для организации конвейера по извлечению → трансформации → загрузке данных (ETL). Наоборот, если данные используются в технологическом процессе по мере их поступления и влияют на автоматическое принятие огромного числа решений, то получать результаты парсинга раз в день в файле Excel вряд ли будет удобно.

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

В то же время, можно получать алгоритм парсинга из облака и запускать его на своем ноутбуке. При этом не требуется ждать поступления результатов на почту и можно контролировать на экране сам процесс парсинга: последовательное открытие страниц сайта и запись полученных данных в таблицу Excel. Такой вариант соединяет в себе и преимущества аутсорса и возможность непрерывного контроля за процессом получения результата.

Поэтому получается, что можно ли считать критерием набор технологий "под капотом" парсера - вопрос неоднозначный.

Третий критерий - сложность использования

Здесь гибкость конкурирует с простотой. Специализированные парсеры имеют жестко ограниченный набор возможностей для решения конкретной задачи. Например, "парсинг контактов" обычно вообще ограничивается предоставлением заранее собранной базы. Для оценщиков недвижимости парсер включает сохранение копии страницы с открытым номером телефона (в Авито) в PDF и в JPG.

Настройки специального парсера
Настройки специального парсера

В отличие от специальных, универсальные парсеры могут быть настроены для решения любой задачи. Само это отличие заключается в том, что универсальные парсеры требуют отдельной настройки под каждую конкретную задачу. Настройка может использовать программирование или обходиться без него.

Как правило, программирование парсеров делается на специально разработанном языке. У каждого парсера свой язык программирования, названия у таких языков нет. Это довольно простые языки, которые предназначены для освоения неподготовленным пользователем за несколько минут.

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

Как первые, так и вторые не универсальны на все 100%. Парсеры без программирования могут выручить только в самых технически простых случаях. Однако, возможность программирования парсера сама по себе не гарантирует, что с их помощью получится решить любую задачу.

На 100% универсальной выглядит возможность заказать парсер у фрилансера. Здесь надо учитывать, что у каждого программиста есть свои особенности, которые могут не вполне соответствовать вашим потребностям. Нередко сложности начинаются еще в момент обсуждения заказа, так что издержки такого использования парсинга могут потребовать больших накладных расходов даже на процесс коммуникации.

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

Парсинг с нами навсегда) Редко в каком деле он не нужен. Поэтому осваивайте, если вы еще не в теме.

Критерии выбора парсера помогут вам ориентироваться в огромном многообразии предлагаемых в сети вариантов.

Они также полезны для понимания собственной задачи.

Они просто бесценны при составлении технического задания для разработки парсера на заказ)

Да пребудет с вами Эксель!)

11
2 комментария

Какой парсер умеет работать с сайтами, защищаемыми CloudFlare в параноидальном режиме?