ПРОЕКТ

Скрейпинг сайтов с настраиваемой автоматизацией на Python

Кастомная разработка ПО, Скрейпинг данных с сайтов, Настраиваемая автоматизация на Python, Структурированный экспорт в CSV и JSON, Рендеринг JavaScript-страниц, Повторные запуски скрейпинга, Передача в базу данных и API

  • Отрасль: Исследовательские услуги
  • Германия Местоположение: Германия
  • Срок выполнения: 10 недель
  • Технологии: Python, JavaScript / TypeScript
3 месяцев

Клиент тратит время на сбор данных о товарах, объявлениях и контактах с общедоступных сайтов. Ручной или нерегулярный сбор усложняет повторные исследования. ПО принимает целевые URL или шаблоны URL, селекторы и правила пагинации. Оно возвращает структурированные записи в CSV, JSON или Excel. Исследовательская организация получает единый настраиваемый инструмент для повторного извлечения данных с сайтов, включая страницы, которым требуется браузерный рендеринг.

Обзор

Проблема

Исследовательская организация тратит время на замену ручного или нерегулярного сбора данных с сайтов повторным извлечением данных.

Решение

Решение стало настраиваемым скрейпером, который соблюдает правила пагинации, обрабатывает динамический контент и экспортирует структурированные записи.

Результат

ПО создано для сокращения ручного сбора и неравномерного извлечения данных.

История клиента

Клиент - исследовательская организация из Германии. Для исследований она собирает с общедоступных сайтов данные о товарах, объявлениях и контактах.

Ручной и нерегулярный сбор данных отнимает время команды, особенно когда целевые сайты используют пагинацию, меняющуюся структуру и динамические таблицы.

Задача была простой: принимать целевые URL или шаблоны URL, настраиваемые селекторы или файлы конфигурации и возвращать выбранное содержимое сайта в виде структурированных записей.

Решение построено вокруг настраиваемых правил полей, многостраничного обхода и браузерного рендеринга. Запланированные запуски и понятные логи поддерживают повторный сбор данных.

Клиент хотел

  1. Принимать URL, шаблоны URL, селекторы, XPath или файлы конфигурации
  2. Извлекать выбранное содержимое в структурированные записи
  3. Соблюдать пагинацию на страницах и сайтах
  4. Обрабатывать JavaScript-страницы, динамические таблицы и ленивую загрузку

Почему готовое ПО не подошло

Готовое ПО для извлечения данных поддерживает множество типов источников, а управляемые сервисы скрейпинга сосредоточены на API, браузерной инфраструктуре и прокси. Этому клиенту требовались проектные поля, селекторы и правила пагинации. Решение также должно было поддерживать локальное использование, документацию и заданные требования к выводу.

Обзор проекта

Решение построено вокруг экрана настройки скрейпинга, где исследовательская команда задаёт целевые URL, поля и селекторы. Также доступны правила пагинации и форматы вывода.

Для работы с разными структурами страниц скрейпер использует настраиваемые правила извлечения полей, видимого текста и таблиц. Он обходит связанные страницы и при необходимости учитывает пагинацию.

Для JavaScript-страниц, динамических таблиц и лениво загружаемого контента предусмотрен браузерный рендеринг. Для статических страниц можно использовать прямые HTTP-запросы и библиотеку парсинга HTML.

Решение рассчитано на повторное использование. Оно работает из командной строки или на локальном компьютере, поддерживает планирование и записывает ошибки и повторные попытки.

Собранные записи можно экспортировать в CSV, JSON или Excel. PostgreSQL, лёгкая REST JSON-точка и документация проекта поддерживают дальнейшую работу команды клиента.

Реализованные ключевые функции

  • Настраиваемые целевые URL и шаблоны URL
  • Редактор селекторов полей и XPath
  • Многостраничный обход и пагинация
  • Рендеринг JavaScript и лениво загружаемого контента
  • Экспорт в CSV, JSON и Excel
  • Ограничения скорости, задержки, повторные попытки и настройки User-Agent
  • История запусков и логи скрейпинга
  • Передача в PostgreSQL или REST JSON

Дополнительные функции

+ Управление соблюдением robots.txt + Облачное планирование + Архивирование данных + Проектная документация + Дополнительные сопоставления данных

Кому ещё подойдёт это решение

У этих компаний похожая задача, и то же решение можно адаптировать для сбора общедоступных данных с сайтов.

Агентство маркетинговых исследований

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

Команда анализа данных

Задача Собирает объявления, таблицы и выбранное содержимое с общедоступных сайтов.
Как помогает решение Помогает соблюдать пагинацию, рендерить динамические страницы и передавать записи в файлы или базы данных.

Исследовательский консалтинг

Задача Архивирует или анализирует видимый текст и структурированное содержимое общедоступных страниц.
Как помогает решение Помогает планировать запуски, просматривать ошибки и хранить созданные файлы вместе с логами запусков.

Технологический стек

Python

Язык автоматизации

Python запускает настраиваемый скрейпер, правила извлечения, обработку данных и экспорт.

JavaScript / TypeScript

Язык браузерной автоматизации

JavaScript или TypeScript поддерживает браузерную автоматизацию при браузерном извлечении.

Requests

Запросы HTML-страниц

Requests (библиотека Python для отправки веб-запросов) загружает страницы напрямую для извлечения.

BeautifulSoup

Парсинг HTML-страниц

BeautifulSoup (библиотека Python для чтения HTML) находит выбранные поля и видимое содержимое в разметке страницы.

Scrapy

Многостраничный обход

Scrapy (фреймворк Python для обхода сайтов) переходит по связанным страницам и поддерживает многостраничное извлечение.

Playwright

Рендеринг браузерных страниц

Playwright - это высокоуровневый API для автоматизации веб-браузеров при браузерном извлечении.

Pandas

Обработка извлечённых данных

Pandas организует извлечённые записи перед экспортом или передачей.

openpyxl

Создание файлов Excel

openpyxl (библиотека Python для чтения и записи файлов Excel) поддерживает вывод XLSX.

CSV

Экспорт табличных записей

CSV сохраняет извлечённые записи в простом табличном файле.

JSON

Экспорт структурированных записей

JSON сохраняет извлечённые поля в структурированных записях для файлов или API.

Интеграции

PostgreSQL

Скрейпер записывает собранные записи в PostgreSQL, если требуется передача в базу данных.

REST JSON endpoint

По запросу решение публикует собранные записи через лёгкую REST JSON-точку.

Excel

Решение передаёт извлечённые записи через файлы XLSX.

Command line and local scheduling

Скрейпер работает из командной строки или на локальном компьютере через cron или Windows Task Scheduler.

Результат

Настройте правила извлечения для каждого сайта

Экран настройки объединяет целевые сайты, поля и селекторы. Также доступны настройки пагинации и динамического контента.

Он даёт исследовательской команде понятное место для определения того, что скрейпер будет собирать перед запуском.

Как это работает

  1. Настройка сохраняет URL сайтов, необходимые поля и селекторы или XPath.
  2. Скрейпер применяет правила полей к выбранному содержимому страниц.
  3. Модули пагинации и динамического контента подготавливают запуск для связанных страниц и содержимого, отрендеренного в браузере.
  • Целевые URL могут быть отдельными адресами или шаблонами URL.
  • Выходные форматы включают CSV, JSON или Excel.
Примечание: Ограничения скорости, задержки, настройки User-Agent, повторные попытки и управление соблюдением robots.txt поддерживают ответственное извлечение.
Настройка скрейпера

Настройка скрейпера

Функции этого экрана
Извлекать выбранные поля Обрабатывать пагинацию Рендерить динамический контент

Просматривайте структурированные записи сайтов

Таблица результатов отображает извлечённые поля, видимый текст и таблицы в виде структурированных записей.

Экспорт в CSV, JSON и Excel сохраняет собранные данные готовыми для исследовательских файлов и дальнейшего анализа.

Как это работает

  1. Модуль извлечения создаёт записи из выбранных полей, видимого текста, таблиц или объявлений.
  2. Таблица результатов показывает извлечённые поля и количество записей.
  3. Модуль экспорта создаёт файлы CSV, JSON или XLSX.
  • JSON подходит для структурированного обмена данными.
  • Excel доступен, если этого требует объём извлечения.
Извлечённые записи и экспорт

Извлечённые записи и экспорт

Функции этого экрана
Извлекать структурированные данные Экспортировать данные в CSV или JSON

Отслеживайте запуски и изучайте ошибки

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

Логи дают команде практическую возможность проверить работу скрейпера, если страница изменилась или запуск требует внимания.

Как это работает

  1. Скрейпер сохраняет временные метки запусков, целевые сайты и статус успеха или ошибки.
  2. Просмотрщик логов отображает сообщения об ошибках и информацию о повторных попытках.
  3. Ссылки на созданные файлы связывают каждый запуск с путями к CSV, JSON или логам.
  • История запусков сохраняет активность повторного сбора.
  • Сообщения об ошибках показывают проблемы, зарегистрированные во время запуска.
История запусков и логи скрейпера

История запусков и логи скрейпера

Функции этого экрана
Вести лог работы скрейпера

Передавайте записи в базу данных или API

Экран передачи подготавливает собранные записи для использования в базе данных или API, а не только в экспортных файлах.

Сопоставление полей со схемой и предварительный просмотр JSON помогают адаптировать извлечённые данные к целевой структуре.

Как это работает

  1. Модуль назначения сохраняет настройки базы данных или конфигурацию назначения.
  2. Модуль сопоставления связывает извлечённые поля со схемой целевой таблицы.
  3. Интеграционный модуль сохраняет JSON, записи базы данных и логи запусков в соответствии со схемой.
  • Решение при необходимости поддерживает передачу в PostgreSQL.
  • По запросу доступна лёгкая REST JSON-точка.
Передача в базу данных или API

Передача в базу данных или API

Что предлагает решение

С помощью этого решения исследовательская организация может:

  • Настраивать правила извлечения для каждого целевого сайта
  • Собирать выбранное содержимое со страниц с пагинацией
  • Обрабатывать контент, отрендеренный в браузере и загружаемый лениво
  • Экспортировать структурированные записи в CSV, JSON или Excel
  • Просматривать ошибки, повторные попытки и созданные файлы
  • Передавать собранные записи в базу данных или API

Справятся ли готовые системы с этой задачей?

Перед разработкой задачу сравнили с готовыми продуктами на основе их собственных описаний.

Что нужно клиенту ПО для извлечения данных Data Extraction API для скрейпинга сайтов Oxylabs, Zyte, Scrapfly Инструменты скрейпинга без кода Octoparse Кастомное решение
Приём URL и правил извлечения
Извлечение выбранного содержимого сайта
Соблюдение пагинации
Обработка динамического контента в браузере частично
Соответствие собственным правилам клиента: этапам, ролям и отчётам — — —
Все шаги в одном месте —
Отсутствие ручных действий между программами частично частично

На основе общедоступных описаний продуктов и их категорий.

Основные части задачи доступны в ПО для извлечения данных, API для скрейпинга сайтов и инструментах скрейпинга без кода. Готового продукта достаточно, если требуется только одна часть задачи.

Этому клиенту потребовалось собственное ПО, поскольку правила извлечения, локальное использование, документация, форматы вывода, логи и требования к назначениям должны были работать вместе в одном месте для исследовательской работы. Готовые продукты также различаются тем, как они обрабатывают ручные действия между программами.

Итог

В результате создано решение, которое устраняет ручной сбор из процесса перехода от общедоступных сайтов к структурированным исследовательским данным.

FAQ

Думаете о создании похожей системы? Ознакомьтесь с ответами ниже, чтобы узнать, как настраиваемый скрейпинг, экспорт, браузерный рендеринг и передача встраиваются в исследовательский процесс.