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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Статья была полезна?

A
Admin

Блогер и преподаватель по темам фотографии, дизайна и цифрового творчества.

Все статьи