ПРОЕКТ

Сбор данных с сайтов с помощью настраиваемой автоматизации на 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 для сбора с сайтов и инструментах сбора без кода. Готового продукта достаточно, когда требуется только одна часть задачи.

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

В итоге

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

ЧАСТЫЕ ВОПРОСЫ

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