перейти к содержанию

Как создать парсер для электронной коммерции с помощью Cheerio + JavaScript

Веб-сайты электронной коммерции — это кладезь ценных данных. Информацию о продуктах, ценах, уровне запасов и т. д. можно извлечь и использовать для конкурентной разведки, исследования рынка, оптимизации цен, автоматизации прямых поставок и многих других случаев.

В этом подробном руководстве вы узнаете, как использовать возможности Cheerio и JavaScript для создания полностью автоматизированного парсера для любого веб-сайта электронной коммерции. Мы проведем анализ целевого сайта, настройку Cheerio Scraper, написание пользовательской логики обработки страниц, интеграцию с Gmail и планирование повторяющихся запусков.

В итоге у вас будет масштабируемый парсер, который извлекает ключевые данные электронной коммерции и доставляет их в ваш почтовый ящик на автопилоте. Давайте погрузимся!

Анализ целевого веб-сайта электронной коммерции

Прежде чем писать одну строку кода, нам необходимо понять структуру и ключевые элементы нашего целевого сайта электронной коммерции. Цель – выявить:

  • Базовый URL и параметры для поисковых запросов
  • Шаблоны URL-адресов для просмотра категорий продуктов
  • Шаблоны URL для отдельных страниц продукта
  • Расположение важных данных, которые мы хотим извлечь (название, описание, цена и т. д.).

Этот анализ расскажет, как мы настраиваем наш парсер Cheerio.

Самый простой способ — изучить сайт вручную: искать продукты, посещать страницы категорий и товаров, а также использовать инструменты разработчика браузера для проверки элементов и URL-адресов.

Например, на странице продукта Amazon мы видим:

  • Название продукта находится в теге H1.
  • Артикул ASIN находится в диапазоне с id="productDetails_detailBullets_sections1"
  • Цена указана в диапазоне id="priceblock_ourprice"

Проведите эту разведку на целевом сайте, чтобы найти CSS-селекторы для нужных вам данных.

Также проверьте, сильно ли сайт использует JavaScript. Один из трюков — отключить JS в вашем браузере и посмотреть, загружается ли контент. Если нет, нам может понадобиться инструмент автоматизации браузера, такой как Puppeteer, вместо Cheerio.

Хорошо, давайте представим, что мы завершили анализ сайта exampleStore.com и собрали следующее:

Вооружившись этой информацией, мы готовы настроить наш парсер Cheerio!

Настройка парсера Cheerio

Перейдите в Apify и создайте нового актера Cheerio Scraper. Мы будем использовать следующие ключевые поля конфигурации:

Начальные URL – Мы установим это наш URL-адрес поиска, который принимает параметры searchTerm и pageNumber.

Селектор ссылок – Мы хотим извлечь ссылки с каждой страницы, поэтому воспользуемся простым селектором «a».

Псевдо-URL-адреса – В этом нет необходимости, поскольку мы используем шаблоны Glob.

Глобальные шаблоны – Здесь мы создадим два шаблона:

  1. Чтобы сопоставить URL-адреса нумерации страниц, например https://www.examplestore.com/search?q=shoes&page=2

  2. Чтобы сопоставить URL-адреса продуктов, например https://www.examplestore.com/product/1234/

Данные пользователя – Полезно для маркировки типов запросов, например «ПОИСК», «СПИСОК», «ПРОДУКТ».

Страница Функция – Здесь мы напишем собственную логику для обработки каждого типа страниц.

Давайте сохраним эту конфигурацию как задачу Apify, и мы готовы перейти к написанию функции страницы!

Написание функции страницы

Функция страницы запускается на каждой странице, загружаемой Cheerio Scraper. Здесь мы можем проанализировать текущий запрос, выполнить такие действия, как извлечение данных или постановку дополнительных URL-адресов в очередь, а также вернуть очищенные данные.

Сначала мы проверим request.userData.label чтобы определить тип страницы:

if (request.userData.label === ‘SEARCH‘) {
  // Search page logic
} else if (request.userData.label === ‘LISTING‘) {
  // Category listing page logic 
} else if (request.userData.label === ‘PRODUCT‘) {
  // Product detail page logic
}

Для страницы поиска мы можем захотеть получить общее количество найденных продуктов и записать его в журнал.

На страницах списков мы можем поставить в очередь дополнительные URL-адреса с подробными сведениями о продукте для очистки.

Наконец, на страницах продуктов мы можем использовать наши селекторы для извлечения важных полей данных, создания объекта результатов и его возврата:

const results = {
  url: request.url,
  title: $(selectors.title).text(),
  description: $(selectors.description).text(),
  price: $(selectors.price).text(),
}

return results;

Объекты, возвращаемые с каждой страницы продукта, будут сохранены в результирующем наборе данных.

Эта логика функции страницы позволяет нам по-разному обрабатывать каждый тип страницы и настраивать поведение очистки.

Интеграция с Gmail для получения очищенных данных

Теперь, когда наш парсер извлекает данные, мы, вероятно, хотим получать результаты без необходимости вручную экспортировать их из Apify после каждого запуска.

К счастью, Apify обеспечивает более 60 интеграций, включая электронную почту, облачное хранилище, базы данных, API и многое другое.

Давайте настроим интеграцию с Gmail, чтобы наш очищенный набор данных автоматически отправлялся нам по электронной почте.

В своем актере перейдите на вкладку «Интеграции»:

  • Нажмите «Добавить интеграцию» и выберите Gmail.
  • Войдите в свою учетную запись Google
  • Выберите адрес электронной почты, на который нужно отправить результаты
  • Настройте тему и текст сообщения по мере необходимости.
  • Нажмите «Сохранить» и включите интеграцию.

Теперь каждый раз при запуске нашего актера мы будем получать электронное письмо с прикрепленным файлом очищенных данных!

Планирование автоматического запуска скрепера

Последний шаг — настроить расписание, чтобы наш парсер запускался автоматически и на регулярной основе.

На странице актера нажмите «Расписания», а затем «Добавить расписание».

Мы можем дать расписанию метку, установить выражение cron для повторяющихся запусков (например, ежедневно) и выбрать часовой пояс.

Теперь наш парсер электронной коммерции Cheerio будет работать как часы по расписанию, собирать обновленные данные и доставлять результаты прямо в наш почтовый ящик!

Заключение

В этом уроке мы:

  • Проанализировали сайт электронной коммерции для определения ключевых полей данных.
  • Настроил парсер Cheerio с начальными URL-адресами, шаблонами Glob и функцией страницы.
  • Написал пользовательскую логику страницы для обработки страниц поиска, списков и продуктов.
  • Интегрированный Gmail для автоматического получения очищенных наборов данных.
  • Запланировал регулярное участие актера в выступлениях

Теперь у вас есть полный план создания масштабируемых парсеров для электронной коммерции с помощью Cheerio!

Несколько следующих шагов по расширению скребка:

  • Очистите дополнительные поля данных, такие как отзывы, изображения, инвентарь и т. д.
  • Сохраняйте очищенные данные в базе данных или API, а не просто по электронной почте.
  • Разверните парсер в Apify Cloud для бессерверного масштабирования.

Мы лишь поверхностно рассмотрели возможности парсинга веб-страниц и автоматизации с помощью Apify. Чтобы узнать больше, проверьте:

  • Документация для всех Apify SDK и инструментов, таких как Puppeteer Scraper и Crawlee.
  • Ресурс Web Scraping 101, включая бесплатные электронные книги и видеокурсы.
  • Форум сообщества Apify, где можно задать вопросы и встретиться с другими разработчиками.

Удачного соскабливания!

Присоединяйтесь к беседе

Ваш электронный адрес не будет опубликован. Обязательные поля помечены * *