Парсеры 1.1 Help

Архитектура и принципы работы

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

Основной стек:

  • Python (асинхронность через asyncio) — использован для эффективной обработки асинхронных операций, что позволяет повышать производительность при работе с API и парсингом данных.

  • Selenium (для автоматизации браузера) — используется для взаимодействия с веб-страницами в автоматическом режиме, включая авторизацию, поиск и извлечение данных.

  • BeautifulSoup (для парсинга HTML) — помогает эффективно извлекать информацию из HTML-документов.

  • CSV (экспорт результатов) — формат для вывода собранных данных в удобном виде.

  • Chrome WebDriver + WebDriver Manager — необходимы для управления браузером Google Chrome, обеспечивая стабильную работу с веб-страницами и интеграцию с Selenium.

Основные компоненты:

Класс: SeleniumTenchatParser

Этот класс инкапсулирует всё взаимодействие с браузером и обеспечивает функциональность для извлечения данных из Tenchat:

  • Авторизация: Через ввод номера телефона и пароля.

  • Поиск и фильтрация: Находит сообщества по ключевым словам, что позволяет целенаправленно собирать информацию.

  • Парсинг данных: Извлекаются различные данные, включая название, описание, контактные данные, ссылки и адреса сообществ.

  • Скроллинг: Для извлечения всех возможных сообществ из результатов поиска.

Вспомогательные методы:

  • __click_element_when_clickable, __get_element_when_located — это обёртки для ожидания появления элементов на странице, которые используют возможности Selenium для корректной синхронизации действий.

  • extract_plain_text_and_links — рекурсивный метод для извлечения всех текстов и ссылок из HTML-дерева страницы.

  • find_data_in_html — основной метод парсинга HTML-карточки сообщества, который извлекает необходимые данные из структуры карточки сообщества.

Основная точка входа: make_csv_text

Асинхронная функция, которая выполняет полный цикл работы:

  1. Запуск браузера в headless-режиме — браузер запускается в фоновом режиме, что ускоряет процесс, так как не требуется визуальное отображение.

  2. Логин в Tenchat — осуществляет авторизацию в системе с использованием телефона и пароля.

  3. Поиск сообществ — выполняет поиск по заданным запросам и фильтрам.

  4. Парсинг карточек — после того как сообщества найдены, происходит извлечение данных с каждой карточки.

  5. Возвращение результата в CSV-формате — собранные данные экспортируются в CSV, что делает их доступными для дальнейшего анализа или использования.

Принципы работы:

  1. Асинхронность: Использование асинхронных методов в Python и Selenium позволяет сократить время ожидания, ускоряя процесс извлечения и обработки данных.

  2. Модульность: Архитектура разделена на отдельные компоненты (классы и функции), что упрощает тестирование и расширение функциональности.

  3. Обработка ошибок: Встроенные механизмы повторных попыток и ожидания элементов в Selenium делают систему более устойчивой к нестабильности сети и непредвиденным сбоям на стороне сайта.

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

12 April 2025