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

Никита Калашников
Парсинг товаров с сайта Ozon с использованием JavaScript позволяет автоматизировать сбор данных о продуктах, их ценах, описаниях и многом другом. В этой статье мы рассмотрим, как использовать JavaScript для парсинга данных с сайта Ozon. Мы будем использовать Node.js и библиотеки для парсинга веб-страниц.
Начало работы
Установка необходимых инструментов
Для парсинга нам потребуются Node.js и несколько библиотек. Убедитесь, что Node.js установлен на вашем компьютере, а затем установите необходимые библиотеки.
- Установите Node.js с официального сайта nodejs.org.
- Создайте новый проект и установите библиотеки Axios и Cheerio:
1mkdir ozon-parser
2cd ozon-parser
3npm init -y
4npm install axios cheerio
Парсинг товаров с Ozon
- Импорт необходимых модулей
Создайте файл index.js
и импортируйте Axios и Cheerio:
1const axios = require('axios');
2const cheerio = require('cheerio');
- Отправка запроса на сайт 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 });
- Обработка данных
В примере выше мы извлекаем заголовки и цены товаров с использованием 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();