Product Scraper — это Node.js-скрипт, предназначенный для автоматического сбора (скрапинга) информации о товарах с веб-страниц. Он использует библиотеку Puppeteer для управления браузером в фоновом режиме, переходит по списку заданных URL-адресов, извлекает подробные данные о каждом товаре и сохраняет результаты в XLSX-файл (Excel).
Этот инструмент идеально подходит для сбора данных для анализа рынка, наполнения каталогов интернет-магазинов или мониторинга цен.
- Сбор данных с нескольких страниц: Скрипт обрабатывает список URL-адресов из текстового файла.
- Извлечение подробной информации: Собирает SEO-данные, название, артикул, цену, описание, изображения и все характеристики товара.
- Взаимодействие со страницей: Может нажимать на кнопки "Подробнее" или "Развернуть", чтобы загрузить полный контент перед сбором данных.
- Экспорт в Excel: Все собранные данные автоматически сохраняются в удобном формате
.xlsx. - Гибкая конфигурация: Ключевые параметры, такие как пути к файлам и режим работы, вынесены в отдельный конфигурационный файл.
- Модульная структура: Логика сбора данных в браузере (
parser.js) отделена от основной логики управления (script.js).
Проект состоит из нескольких ключевых файлов, каждый из которых выполняет свою роль:
- Назначение: Основной файл, который запускает и координирует весь процесс скрапинга.
- Функции:
- Запускает и управляет браузером (Puppeteer).
- Читает список ссылок из
links.txt. - Последовательно открывает каждую страницу.
- Внедряет и выполняет код из
parser.jsна странице. - Собирает результаты и вызывает функцию для сохранения их в Excel.
- Назначение: "Сердце" скрапера. Этот скрипт выполняется непосредственно в контексте браузера на странице товара.
- Функции:
- Находит и извлекает все необходимые данные (заголовок, цену, характеристики и т.д.) из HTML-кода страницы с помощью DOM-селекторов.
- Возвращает собранные данные в виде единого объекта JSON.
- Важно: Этот файл нужно адаптировать, если вы хотите собирать данные с другого сайта, так как HTML-структура и CSS-классы будут отличаться.
- Назначение: Файл для быстрой и удобной настройки скрипта без изменения основного кода.
- Параметры:
OUTPUT_FILE_PATH: Имя итогового Excel-файла.PARSER_FILE_PATH: Путь к файлу-парсеру.LINKS_FILE_PATH: Путь к файлу со списком ссылок.IS_CONTENT_COMPLETE: Флаг, указывающий, нужно ли кликать на кнопку для загрузки полного описания товара.
- Назначение: Простой текстовый файл, где каждая строка — это URL-адрес страницы товара для скрапинга.
- Назначение: Стандартные файлы Node.js для управления зависимостями проекта и его метаданными.
Для работы проекта на вашем компьютере должны быть установлены:
- Node.js (рекомендуется версия 18 или выше).
- Менеджер пакетов
npm(устанавливается вместе с Node.js).
-
Клонируйте репозиторий или скачайте файлы проекта в одну папку.
-
Откройте терминал в папке проекта.
-
Установите зависимости, выполнив команду:
npm installЭта команда скачает и установит все необходимые библиотеки (
puppeteer,xlsxи др.), указанные вpackage.json.
-
Настройте
config.js: Убедитесь, что пути к файлам указаны верно. При необходимости измените флагIS_CONTENT_COMPLETE. -
Заполните
links.txt: Добавьте в файл URL-адреса страниц товаров, которые вы хотите обработать. Каждый URL должен быть на новой строке. -
Запустите скрапер: Введите в терминале следующую команду:
node script.js --scrape -
Дождитесь выполнения: Скрипт начнет свою работу. Вы будете видеть в консоли лог его действий: запуск браузера, переход по страницам, сбор данных.
-
Получите результат: После завершения работы в папке проекта появится файл
products.xlsx(или с другим именем, указанным в конфиге) с собранными данными.
Если вы хотите использовать этот скрапер для другого сайта, вам потребуется изменить только один файл — parser.js.
Алгоритм действий:
- Откройте страницу товара на целевом сайте в вашем браузере.
- Откройте Инструменты разработчика (обычно клавишей F12).
- Найдите элементы, содержащие нужные вам данные (название, цена, описание и т.д.).
- Определите их уникальные CSS-селекторы (классы, ID или другие атрибуты).
- Откройте
parser.jsи замените существующие селекторы (например,.productTitle--J2W7Iили.priceBlockFinalPrice--iToZR) на новые, которые вы нашли на шаге 4. - Сохраните изменения и запустите скрипт. Возможно, потребуется несколько попыток, чтобы подобрать правильные селекторы.