Обзор
Исследовательская организация тратит время на замену ручного или нерегулярного сбора данных с сайтов повторным извлечением данных.
Решение стало настраиваемым скрейпером, который соблюдает правила пагинации, обрабатывает динамический контент и экспортирует структурированные записи.
ПО создано для сокращения ручного сбора и неравномерного извлечения данных.
История клиента
Клиент - исследовательская организация из Германии. Для исследований она собирает с общедоступных сайтов данные о товарах, объявлениях и контактах.
Ручной и нерегулярный сбор данных отнимает время команды, особенно когда целевые сайты используют пагинацию, меняющуюся структуру и динамические таблицы.
Задача была простой: принимать целевые 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