ПРОЕКТ

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

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

В заключение

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

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ

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