3 главные задачи, которые решает этот скрипт
1. Создание товарного фида для рекламы
Маркетплейсы (Авито, Яндекс.Маркет) и рекламные площадки требуют список товаров в формате XML. Если CMS сайта не умеет генерировать такой файл, парсер соберет данные прямо с витрины и упакует их в нужный формат.
2. Мониторинг и анализ конкурентов
Скрипт позволяет автоматически отслеживать изменение цен, появление новинок или обнуление остатков на сайтах-конкурентах для динамического ценообразования.
3. Миграция данных
При переносе товаров со старого сайта (от которого утеряны доступы) на новую платформу парсер заменяет недели ручного копирования карточек на пару минут работы скрипта.
Как устроен этот процесс изнутри
Скрипт имитирует поведение обычного пользователя, но делает это за доли секунды:
[ Скрипт ] ──(Запрос HTML)──> [ Сайт магазина ]
│ │
<──(Скачивает страницу целиком)────┘
│
[ Текстовый поиск ] ──> Находит теги товаров (например, )
│
[ Сборка XML ] ──> Формирует валидный файл feed.xml
1. Запрос данных:
Node.js отправляет стандартный GET-запрос к странице каталога и скачивает ее исходный HTML-код в память.
2. Изоляция блоков:
Метод .split('') режет единый текст страницы на массив отдельных карточек товаров.
, ), формируя готовый к загрузке файл.
3. Фильтрация:
Скрипт заглядывает внутрь каждого кусочка и забирает текст, зажатый между нужными тегами (например, названия внутри ...
).4. Конвертация:
Полученные строки очищаются и заворачиваются в строгие XML-теги (Пример:
const https = require('https');
const fs = require('fs');
// 1. Скачиваем страницу карточки товара в виде html
https.get('https://нужный нам сайт', (res) => {
let html = '';
res.on('data', chunk => html += chunk);
res.on('end', () => {
// выбираем из кода страницы те теги которые нужны для фида
const name = html.split('')[1]?.split('
')[0] || '';
const price = html.split('class="price">')[1]?.split('')[0] || '0';
// Сохраняем фид в виде xml
const xml = `${name} ${price} `;
fs.writeFileSync('feed.xml', xml);
});
});
Почему выбран именно такой подход?
• Автономность:
Не нужны пароли от FTP, доступы к API или одобрение со стороны владельцев сайта.
• Максимальная скорость:
Скрипт не тратит ресурсы на загрузку картинок, стилей и выполнение тяжелых скриптов, работая в разы быстрее полноценного браузера.
• Чистый Node.js:
Код работает без сторонних библиотек (npm-пакетов), что позволяет запускать его на любом самом дешевом сервере без долгой настройки окружения.