Архитектура и принципы работы
Проект построен с использованием современных технологий для обеспечения высокой производительности, масштабируемости и устойчивости при извлечении данных из открытых источников. Основной акцент сделан на асинхронности и автоматизации, что позволяет эффективно работать с большими объемами данных.
Основной стек:
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
Асинхронная функция, которая выполняет полный цикл работы:
Запуск браузера в headless-режиме — браузер запускается в фоновом режиме, что ускоряет процесс, так как не требуется визуальное отображение.
Логин в Tenchat — осуществляет авторизацию в системе с использованием телефона и пароля.
Поиск сообществ — выполняет поиск по заданным запросам и фильтрам.
Парсинг карточек — после того как сообщества найдены, происходит извлечение данных с каждой карточки.
Возвращение результата в CSV-формате — собранные данные экспортируются в CSV, что делает их доступными для дальнейшего анализа или использования.
Принципы работы:
Асинхронность: Использование асинхронных методов в Python и Selenium позволяет сократить время ожидания, ускоряя процесс извлечения и обработки данных.
Модульность: Архитектура разделена на отдельные компоненты (классы и функции), что упрощает тестирование и расширение функциональности.
Обработка ошибок: Встроенные механизмы повторных попыток и ожидания элементов в Selenium делают систему более устойчивой к нестабильности сети и непредвиденным сбоям на стороне сайта.
Гибкость: Возможность расширения для работы с другими сайтами, парсерами или форматами данных, а также простота добавления новых функций через модульный подход.