Skip to content

Latest commit

 

History

History
69 lines (47 loc) · 4.27 KB

File metadata and controls

69 lines (47 loc) · 4.27 KB

PlayCast

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, но проблема заключается в том что большие языковые модели будут весить слишком много.

Участие в разработке

  1. Добавьте новый парсер в каталог parsers/
  2. Создайте соответствующий класс в playcast/Parser.py
  3. Используйте parsers/base.py для реализации общего поведения
  4. Изолируйте селекторы и действия, специфичные для конкретного сайта
  5. Добавьте тесты для вывода нового парсера и утилит

Лицензия

Этот репозиторий распространяется под лицензией MIT