Python Parser Toolkit
Набор Python-утилит для извлечения данных из HTML, преобразования в JSON, удаления дубликатов и многопоточной загрузки изображений или текста.
Обзор
Набор локальных Python-инструментов для автоматизированной обработки данных: парсинга HTML-страниц, преобразования информации в структурированный JSON, объединения наборов данных и массовой загрузки изображений по списку ссылок.
Утилиты создавались для решения конкретных повторяющихся задач, которые вручную занимали много времени и приводили к ошибкам при обработке больших объёмов информации.
HTML-парсер
Один из инструментов извлекает вопросы и варианты ответов из сохранённой HTML-страницы. Для разбора структуры документа используется BeautifulSoup.
Парсер выполняет следующие действия:
- находит блоки с вопросами по структуре HTML-документа;
- извлекает текст каждого вопроса;
- собирает доступные варианты ответов;
- определяет индекс правильного ответа;
- формирует единый массив объектов;
- сохраняет результат в JSON с поддержкой русского текста.
Объединение данных
Дополнительная утилита объединяет несколько JSON-файлов с вопросами в единый набор данных.
Для удаления повторяющихся записей вопрос используется как уникальный ключ. Во время обработки программа выводит количество элементов в исходных файлах, итоговое количество записей и число удалённых дубликатов.
Загрузчик изображений
Отдельный инструмент предназначен для массовой загрузки изображений по списку URL. Загрузка выполняется параллельно с использованием пула потоков, что значительно сокращает время обработки больших списков ссылок.
Загрузчик поддерживает:
- настраиваемое количество параллельных потоков;
- повторные попытки при временных сетевых ошибках;
- обработку HTTP 408, 429 и серверных ошибок;
- проверку Content-Type перед сохранением;
- проверку целостности PNG- и JPEG-файлов;
- контроль размера по заголовку Content-Length;
- автоматическое создание уникальных имён файлов;
- раздельную статистику успешных, пропущенных и ошибочных загрузок.
Результат
Инструменты позволяют преобразовать неструктурированные данные из HTML в готовый JSON-набор, очистить его от дубликатов и автоматически загрузить связанные изображения.
Вместо ручного копирования и проверки данных весь процесс выполняется последовательным запуском нескольких небольших Python-утилит.
Моя роль
Самостоятельно разработал структуру парсеров, обработку HTML и JSON, алгоритм удаления дубликатов, многопоточную загрузку файлов, повторные сетевые запросы, проверки целостности изображений и консольную статистику.