Краткое содержание
Исследовательская организация тратит время на ручной или нерегулярный сбор данных с сайтов вместо регулярного извлечения.
Решение стало настраиваемым сборщиком данных, который соблюдает правила пагинации, обрабатывает динамический контент и экспортирует структурированные записи.
ПО создано для сокращения ручного сбора и непоследовательного извлечения данных.
История клиента
Клиент - исследовательская организация из Германии. Для исследований она собирает данные о товарах, объявлениях и контактах с публичных сайтов.
Ручной и нерегулярный сбор отнимает у команды время, особенно когда на целевых сайтах используются пагинация, меняющиеся структуры страниц и динамические таблицы.
Задача была простой: принимать целевые URL или шаблоны URL, настраиваемые селекторы или файлы конфигурации и возвращать выбранное содержимое сайтов в виде структурированных записей.
Решение построено вокруг настраиваемых правил полей, проверки нескольких страниц и браузерного рендеринга. Плановые запуски и понятные журналы обеспечили регулярный сбор.
Клиент хотел
- Принимать URL, шаблоны URL, селекторы, XPath или файлы конфигурации
- Извлекать выбранное содержимое в структурированные записи
- Обрабатывать пагинацию на страницах и сайтах
- Обрабатывать страницы JavaScript, динамические таблицы и отложенную загрузку
Почему готовое ПО не подошло
Готовое ПО для извлечения данных охватывает множество типов источников, а управляемые сервисы сбора в основном ориентированы на API, браузерную инфраструктуру и прокси-серверы. Этому клиенту требовались поля, селекторы и правила пагинации, адаптированные под конкретный проект. Решение также должно было работать локально, иметь документацию и соответствовать заданным требованиям к выводу.
Обзор проекта
Решение построено вокруг экрана настройки сборщика данных, где исследовательская команда указывает целевые URL, поля и селекторы. Также доступны правила пагинации и форматы вывода.
Для работы с разными структурами страниц сборщик использует настраиваемые правила извлечения полей, видимого текста и таблиц. Он проверяет связанные страницы и при необходимости обрабатывает пагинацию.
Для страниц JavaScript, динамических таблиц и контента, загружаемого позже, предусмотрен браузерный рендеринг. Для статических страниц вместо него можно использовать прямые HTTP-запросы и анализ HTML.
Решение также рассчитано на регулярное использование. Оно работает из командной строки или на локальном компьютере, поддерживает планирование и записывает ошибки и повторные попытки.
Собранные записи можно экспортировать в CSV, JSON или Excel. PostgreSQL, легковесная REST JSON конечная точка и документация проекта помогают клиентской команде использовать их дальше.
Основные реализованные функции
- Настраиваемые целевые URL и шаблоны URL
- Редактор селекторов полей и XPath
- Проверка нескольких страниц и пагинация
- Рендеринг JavaScript и контента, загружаемого позже
- Экспорт в CSV, JSON и Excel
- Ограничение частоты запросов, задержки, повторные попытки и настройки User-Agent
- История запусков и журналы сбора данных
- Передача в PostgreSQL или REST JSON