Прежде чем мы начнем, нам нужно настроить нашу среду для просмотра веб-страниц. В этом руководстве мы будем использовать библиотеки cheerio и got для Node.js. Обе библиотеки доступны в npm и могут быть установлены с помощью следующей команды:

npm install cheerio got

Как только библиотеки будут установлены, мы можем начать писать наш код.

1. Импорт ваших библиотек

Первым шагом является импорт ваших библиотек и определение URL-адреса веб-сайта, который вы хотите очистить. В этом примере мы будем собирать данные с https://www.cdkeys.com/pc. Мы также создадим переменную для хранения объекта cheerio и используем библиотеку got для выполнения HTTP-запроса к веб-сайту:

const cheerio = require('cheerio');
const got = require('got');

const url= 'https://www.cdkeys.com/pc';

2. Сделайте запрос и проанализируйте данные

Теперь мы можем сделать HTTP-запрос и загрузить HTML-ответ в объект cheerio. После этого мы можем приступить к извлечению данных с сайта. В этом примере мы будем извлекать название продукта, цену и старую цену с веб-сайта.

(async () => {
  const response = await got(url);
  var $ = cheerio.load(response.body);

  var oldPrices = $('span[data-price-type="oldPrice"] span')
  var products = $("li.product-item")

  for(let i =0; i < products.length; i++){
    prod = JSON.parse(products[i].attribs['data-impression'])

    console.log((prod.name + " - $" + prod.price + " - " + oldPrices[i].children[0].data ));
  }
})();

Старые данные о ценах находятся в промежутках с атрибутом data-price-type="oldPrice". Продукты представляют собой теги списка с классом «товар-элемент». К счастью, все данные о продукте на CDKeys находятся в HTML-атрибуте под названием data-impression. У него есть строка JSON со всей информацией о продукте, поэтому мы можем проанализировать ее и распечатать данные о продукте.

Вот и все! Теперь у нас есть скрипт, который может собирать данные с веб-сайта и выводить их на консоль. Чтобы запустить скрипт, просто введите node <filename>.js в окне терминала. Вы должны увидеть распечатанные данные в окне консоли.

Заключение

В этом сообщении блога мы показали вам, как создать веб-скрейпер с помощью JavaScript, используя cheerio, и получили библиотеки для Node.js. Мы также рассмотрели пример извлечения названий продуктов, цен и старых цен с веб-сайта. Немного попрактиковавшись и поэкспериментировав, вы сможете создавать собственные парсеры для любого веб-сайта!

Спасибо за чтение. Если вам понравился этот блог, рассмотрите возможность подписаться на мою учетную запись Medium для ежедневных блогов на темы разработки программного обеспечения и технологий!