Skip to content

Repository files navigation

CrossReference

Программа для автоматического поиска кросс-референсов (Cross Reference) автомобильных фильтров и других запчастей.

На текущий момент реализована поддержка сайта Noitech.


Возможности

  • Поиск по списку артикулов
  • Автоматическое принятие Cookies
  • Открытие карточки товара
  • Чтение раздела Cross Reference
  • Сохранение результатов в Excel
  • Продолжение работы при возникновении ошибок
  • Формирование файла ошибок
  • Настройка через CLI: URL, таймауты, число повторов, headless-режим

Структура проекта

CrossReference/
│
├── articles.txt               # список артикулов
│
├── main.py                    # точка входа + CLI
├── models.py                  # типизированная модель данных
├── utils.py                   # чтение входа, экспорт Excel, журнал ошибок
├── network_debug.py           # перехват XHR/fetch для отладки
├── gui.py                     # графическое окно
├── gui_lite.py                # точка входа для сборки (использует системный Edge)
│
├── parsers/
│   ├── __init__.py
│   └── noitech.py             # парсер Noitech
│
├── tests/
│   ├── test_main.py
│   ├── test_models.py
│   ├── test_parser.py
│   └── test_utils.py
│
├── CrossReference.spec        # spec-файл PyInstaller
├── build_windows.ps1          # сценарий сборки
├── build_variants.ps1         # сценарий сборки
├── README.md
├── PROJECT.md
└── .gitignore

Установка

Установить Python 3.10 или новее.

Создать и активировать виртуальное окружение:

python -m venv .venv
.\.venv\Scripts\Activate.ps1

Установить зависимости:

python -m pip install --upgrade pip
pip install -r requirements.txt

Использование (CLI)

Добавить артикулы в файл

articles.txt

Например

NA077860
NA077861
NA077862

Также можно передать Excel-файл с колонками «Артикул Аналога» и «Бренд Аналога»:

Артикул Аналога   | Бренд Аналога
93621514          | Ecoair
4900050831        | Mann & Hummel
LE 10002          | Mann & Hummel

Бренд из входной колонки «Бренд Аналога» используется только для отображения хода обработки. В итоговом файле первые два столбца содержат бренд и артикул товара, найденного на Noitech. Числовые артикулы (например, 93621514) автоматически приводятся к строке.

Запустить программу:

python main.py articles.txt

или с Excel-файлом:

python main.py Noitech_1_test.xlsx

Параметры командной строки:

python main.py [articles_file] [-o OUTPUT_DIR] [--headless] [--debug-network]
               [--url URL] [--timeout-ms MS] [--attempts N]
Параметр Описание По умолчанию
articles_file Файл со списком артикулов: .txt или .xlsx articles.txt
-o, --output-dir Папка для output.xlsx и errors.txt output
--headless Запускать браузер без окна выключен (видимое окно)
--debug-network Сохранять API-ответы XHR/fetch в папку debug выключен
--url URL каталога https://noitech.com/en/catalogue/
--timeout-ms Таймаут открытия каталога (мс) 60000
--attempts Число попыток открыть каталог 3

Пример с настройками:

python main.py articles.txt -o output --headless --attempts 5 --timeout-ms 90000

Графическое окно для Windows

Запустить окно локально:

python gui.py

В окне можно выбрать файл с артикулами и папку для итоговых output.xlsx и errors.txt. По умолчанию браузер запускается в скрытом режиме (headless). Флажок «Показывать браузер?» включает видимое окно браузера — это полезно для отладки.

При включении флажка «Сохранять API-ответы для отладки» ответы XHR/fetch сохраняются в папке debug внутри выбранной папки результатов. В логе показываются только ответы, в которых встречаются article, code, brand или number.

Для сборки приложения выполните:

.\build_variants.ps1

или

.\build_windows.ps1

Готовое приложение будет в dist\CrossReference\CrossReference.exe. Используется системный Microsoft Edge, поэтому на целевом компьютере не нужны Python и отдельная установка браузера.


Результат

После завершения работы в папке output будут созданы:

output.xlsx   — найденные аналоги
errors.txt    — список ошибок (если есть)
log.txt       — журнал обработки

Формат output.xlsx

Бренд Noitech Артикул Noitech Бренд Аналога Артикул Аналога
Noitech NA077860 MANN FILTER C 30 004
Noitech NA077860 FILTRON AP185
... ... ... ...

Формат errors.txt

ABC123 - Товар не найден.
XYZ999 - Ошибка чтения страницы.

Используемые технологии

  • Python 3
  • Playwright
  • OpenPyXL
  • Sun Valley ttk (sv-ttk) — тема Windows 11

Поддерживаемые сайты

Сайт Статус
Noitech ✅ Реализован

Планы развития

Планируется добавить поддержку:

  • Mann Filter
  • Mahle
  • Donaldson
  • Hengst
  • Sakura
  • Bosch
  • Fleetguard

Версии

v1.4

  • Современная тема Windows 11 в графическом интерфейсе (Sun Valley ttk / sv-ttk)

v1.3

  • Автоматическое удаление дубликатов на всех этапах: входные записи, результаты парсинга, экспорт в Excel
  • Файл articles.txt обновлён: заменён на представительный набор тестовых артикулов (55 записей)

v1.2

  • Чекбокс «Показывать браузер?» в графическом интерфейсе — браузер по умолчанию скрыт (headless)
  • Улучшена обработка Cookies: добавлена поддержка CookieScript
  • Скрытие оверлеев (cookie-баннеры, выпадающие списки) через CSS для надёжности кликов
  • Улучшено распознавание результатов поиска

v1.1

  • Типизированная модель данных (models.CrossReferenceRecord)
  • CLI-аргументы: URL, таймауты, повторы, headless, отладка сети
  • Конкретные исключения парсера вместо except:
  • Ожидание состояния страницы вместо фиксированных задержек
  • Удалён устаревший дубликат noitech.py
  • Результаты исключены из Git через .gitignore
  • Графический интерфейс (gui.py)
  • Spec-файл PyInstaller (CrossReference.spec) — исключение браузеров Chromium из сборки (используется системный Edge)
  • Оптимизация размера: проект сокращён с ~1 GB до ~270 MB (–73%)

v1.0

  • Первый рабочий релиз
  • Обработка списка артикулов
  • Экспорт в Excel
  • Логирование ошибок
  • Поддержка Noitech
  • Выделение парсеров в отдельный пакет parsers

Автор

Проект находится в активной разработке.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages