Программа для автоматического поиска кросс-референсов (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Добавить артикулы в файл
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Запустить окно локально:
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 — журнал обработки
| Бренд Noitech | Артикул Noitech | Бренд Аналога | Артикул Аналога |
|---|---|---|---|
| Noitech | NA077860 | MANN FILTER | C 30 004 |
| Noitech | NA077860 | FILTRON | AP185 |
| ... | ... | ... | ... |
ABC123 - Товар не найден.
XYZ999 - Ошибка чтения страницы.
- Python 3
- Playwright
- OpenPyXL
- Sun Valley ttk (sv-ttk) — тема Windows 11
| Сайт | Статус |
|---|---|
| Noitech | ✅ Реализован |
Планируется добавить поддержку:
- Mann Filter
- Mahle
- Donaldson
- Hengst
- Sakura
- Bosch
- Fleetguard
- Современная тема Windows 11 в графическом интерфейсе (Sun Valley ttk / sv-ttk)
- Автоматическое удаление дубликатов на всех этапах: входные записи, результаты парсинга, экспорт в Excel
- Файл
articles.txtобновлён: заменён на представительный набор тестовых артикулов (55 записей)
- Чекбокс «Показывать браузер?» в графическом интерфейсе — браузер по умолчанию скрыт (headless)
- Улучшена обработка Cookies: добавлена поддержка CookieScript
- Скрытие оверлеев (cookie-баннеры, выпадающие списки) через CSS для надёжности кликов
- Улучшено распознавание результатов поиска
- Типизированная модель данных (
models.CrossReferenceRecord) - CLI-аргументы: URL, таймауты, повторы, headless, отладка сети
- Конкретные исключения парсера вместо
except: - Ожидание состояния страницы вместо фиксированных задержек
- Удалён устаревший дубликат
noitech.py - Результаты исключены из Git через
.gitignore - Графический интерфейс (
gui.py) - Spec-файл PyInstaller (
CrossReference.spec) — исключение браузеров Chromium из сборки (используется системный Edge) - Оптимизация размера: проект сокращён с ~1 GB до ~270 MB (–73%)
- Первый рабочий релиз
- Обработка списка артикулов
- Экспорт в Excel
- Логирование ошибок
- Поддержка Noitech
- Выделение парсеров в отдельный пакет
parsers
Проект находится в активной разработке.