Seo

Увеличиваем скорость парсинга через JSON формат

Сайты с большими объемами данных имеют обычно сложную структуру, защиту от парсинга и другие особенности, которые осложняют процесс сбора информации. Тем не менее, у данного типа проектов обычно есть 1 весомое преимущество по сравнению с остальными стандартными сайтами – поддержка внутри кода формата JSON, который позволяет за считанные секунды получить огромные списки путем парсинга. Конечно, не у всех сайтов с поддержкой JSON исходный код открыт, иногда приходится хорошо постараться, чтобы извлечь его из документа. В отличие от обычной верстки в HTML формате, страница предоставляет доступ к массиву данных напрямую, минуя отдельные выделения классов стилей и элементов в документе, поэтому списки можно получить быстро и безболезненно.
Сбор данных по спискам

Миллионы товаров – как взять?

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

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

Сбор данных по спискам

Парсинг с нужного момента

Ещё одним ключевым моментом является наличие в скрипте тех данных, которые позволяют продолжить парсинг, не вникая в его суть и вспоминать где же вы остановились: когда необходимо зайти в папку с экшеном и взять номер счетчика или другой элемент с которого должно начаться действие. Это очень удобно, когда вам не нужно выполнять лишние операции по управлению своими скриптами, особенно если их количество растет, или вы работаете над несколькими проектами сразу. В данном случае есть большая вероятность того, что вы можете просто перепутать сами папки с экшенами и следовательно продолжить не с того момента.
Конечно, у программы ZennoPoster существует отдельный инструмент сохранения ошибок, и можно определить, где именно они находятся в скрипте, а также продолжить действие именно с этого элемента. Но нам нужно не только определить, где же остановился процесс, а ещё и автоматически начинать действие с запуска экшена. Именно данное решение и является залогом успеха при парсинге огромного количества данных, как в данном конкретном случае.

Сбор данных по спискам

Последовательность действий

Итак, мы подошли к моменту, когда нужно установить приоритеты на сбор информации с сайта.

Первыми и основными элементами парсинга являются: заголовок, описание, ссылки на источник, фото и т.п. Далее следуют дополнительные данные в виде тегов, категорий и другая информация. Все зависит от конкретной задачи.

Эти данные необходимо сохранить в таблицу формата CSV или XLSX. Обычно, если вы берете код формата JSON, то скорее всего вся эта информация уже присутствует в нем, и вам остаётся просто сохранить ее и распределить по ячейкам. Как я уже упоминал в этой статье, удобно и быстро это можно сделать при помощи программы ZennoPoster.

Сбор данных по спискам

Сохранение информации

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

Последним действием мы сохраняем воедино все данные в нужном формате и отправляем заказчику. Здесь нужно определиться сразу с фильтрацией ячеек, которую обговариваете с клиентом заранее, а также количеством строк, ячеек таблицы. В этом случае у вас нет варианта переделывать всю работу бесплатно! Если заказчик сам #профукал# что-то, то это его проблемы, и вы можете запросить дополнительную плату за доработку экшена и процесс парсинга.

Цените свое и чужое время, а время – это деньги, ради которых вы, собственно, и работаете!

Pin It