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