Логотип

Парсим товары с ozon на Javascript

Парсинг товаров
189

Парсинг товаров с сайта Ozon с использованием JavaScript позволяет автоматизировать сбор данных о продуктах, их ценах, описаниях и многом другом. В этой статье мы рассмотрим, как использовать JavaScript для парсинга данных с сайта Ozon. Мы будем использовать Node.js и библиотеки для парсинга веб-страниц.

Начало работы

Установка необходимых инструментов

Для парсинга нам потребуются Node.js и несколько библиотек. Убедитесь, что Node.js установлен на вашем компьютере, а затем установите необходимые библиотеки.

  1. Установите Node.js с официального сайта nodejs.org.
  2. Создайте новый проект и установите библиотеки Axios и Cheerio:
1mkdir ozon-parser
2cd ozon-parser
3npm init -y
4npm install axios cheerio

Парсинг товаров с Ozon

  1. Импорт необходимых модулей

Создайте файл index.js и импортируйте Axios и Cheerio:

1const axios = require('axios');
2const cheerio = require('cheerio');
  1. Отправка запроса на сайт Ozon

Используйте Axios для отправки HTTP-запроса на страницу с товарами:

1const url = 'https://www.ozon.ru/category/noutbuki-15691/';
2
3axios.get(url)
4    .then(response => {
5        const html = response.data;
6        const $ = cheerio.load(html);
7
8        // Парсинг данных
9        const products = [];
10        
11        $('.a0c4 a2o2').each((index, element) => {
12            const title = $(element).find('.a3a3').text();
13            const price = $(element).find('.a0c6').text();
14            
15            products.push({ title, price });
16        });
17
18        console.log(products);
19    })
20    .catch(error => {
21        console.error('Error fetching the page:', error);
22    });
  1. Обработка данных

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

Полный код

Вот полный код для парсинга товаров с Ozon:

1const axios = require('axios');
2const cheerio = require('cheerio');
3
4const url = 'https://www.ozon.ru/category/noutbuki-15691/';
5
6axios.get(url)
7    .then(response => {
8        const html = response.data;
9        const $ = cheerio.load(html);
10
11        const products = [];
12
13        $('.a0c4 a2o2').each((index, element) => {
14            const title = $(element).find('.a3a3').text();
15            const price = $(element).find('.a0c6').text();
16
17            products.push({ title, price });
18        });
19
20        console.log(products);
21    })
22    .catch(error => {
23        console.error('Error fetching the page:', error);
24    });

Обработка большого количества данных

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

Пример парсинга нескольких страниц

1const axios = require('axios');
2const cheerio = require('cheerio');
3
4const baseUrl = 'https://www.ozon.ru/category/noutbuki-15691/';
5const totalPages = 5; // Количество страниц для парсинга
6
7const fetchData = async (page) => {
8    const url = `${baseUrl}?page=${page}`;
9    try {
10        const response = await axios.get(url);
11        return cheerio.load(response.data);
12    } catch (error) {
13        console.error('Error fetching the page:', error);
14    }
15};
16
17const parseProducts = async () => {
18    const products = [];
19    for (let page = 1; page <= totalPages; page++) {
20        const $ = await fetchData(page);
21        $('.a0c4 a2o2').each((index, element) => {
22            const title = $(element).find('.a3a3').text();
23            const price = $(element).find('.a0c6').text();
24            products.push({ title, price });
25        });
26    }
27    console.log(products);
28};
29
30parseProducts();