Прежде чем мы начнем, нам нужно настроить нашу среду для просмотра веб-страниц. В этом руководстве мы будем использовать библиотеки 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 для ежедневных блогов на темы разработки программного обеспечения и технологий!