PlayCast — это гибкий фреймворк на базе Playwright для извлечения структурированных данных о товарах с множества российских сайтов электронной коммерции.
Он предоставляет простой API для парсинга таких сайтов, как Ситилинк, DNS, OZON, Avito и 28bit.
- Парсеры для конкретных сайтов:
Ситилинк,DNS,OZON,Avitoи28bit(в будущем будет больше). - Использует Playwright и автоматизацию браузера для загрузки страниц и сбора результатов поиска.
- Включает общие утилиты для имитации человеческого ввода текста, прокрутки и работы с селекторами.
- Простой импорт и использование:
from playcast.Parser import ParseOzon.
Цель — создать повторно используемый инструментарий для парсинга вместо одноразового скрипта. В будущем этот проект может вырасти в расширяемую библиотеку со следующими возможностями:
- общий базовый класс парсера;
- регистрация парсеров по принципу плагинов;
- селекторы, управляемые конфигурацией;
- опциональная помощь большой языковой модели (LLM) для поиска селекторов и анализа страниц.
python -m pip install -U pip
python -m pip install playwright beautifulsoup4 fake-useragent httpx lxml requests undetected-playwright playwright-stealth rebrowser-playwright
python -m playwright install chromiumИмпортируйте и используйте парсер:
import asyncio
from multiparser.Parser import ParseOzon
async def main():
results = await ParseOzon.get_cards_by_placeholder("RTX 5080")
print(results)
asyncio.run(main())Это запустит Playwright, выполнит поиск «RTX 5080» на OZON, извлечёт данные о товарах и вернёт результаты.
playcast/Parser.py- основные классы парсеров с методамиparsers/- реализации отдельных парсеровcommon/utils.py- общие вспомогательные функцииdata/config.py- URL‑адреса, ключевые слова для поиска по умолчанию и константы
Возможное улучшение в будущем — использовать большую языковую модель (LLM), чтобы анализировать HTML‑код страницы и автоматически предлагать селекторы или шаблоны атрибутов. Это поможет сделать парсер более гибким при изменениях на сайтах и сократить объём ручной настройки CSS/XPath, но проблема заключается в том что большие языковые модели будут весить слишком много.
- Добавьте новый парсер в каталог
parsers/ - Создайте соответствующий класс в
playcast/Parser.py - Используйте
parsers/base.pyдля реализации общего поведения - Изолируйте селекторы и действия, специфичные для конкретного сайта
- Добавьте тесты для вывода нового парсера и утилит
Этот репозиторий распространяется под лицензией MIT