Node js: парсим sitemap и получаем все ссылки
Задача такая: получить карту сайта (sitemap) и вытащить из нее все ссылки в массив. Для парсинга мы будем использовать node js и библиотеку Sitemapper.
Установка библиотеки.
Подразумевается, что у вас уже установлен Node js, поэтому в папке проекта инсталлим нужную нам библиотеку.
npm install sitemapper --save
Функция для сбора ссылок с карты сайта.
А теперь самое интересное, пишем функцию и оборачиваем ее в Promise (промис). Почему промис? Да потому, что потом удобнее и читабельнее идти по цепочке then() для дальнейшего запуска зависимостей.
const sitemap = 'https://www.site.com/sitemap.xml';
const getUrls = ( sitemap ) => {
return new Promise( ( resolve, reject ) => {
const sitemapObj = new Sitemapper();
sitemapObj.fetch( sitemap ).then( function( sites ) {
resolve( sites );
} );
} );
}
Теперь мы можем вызвать нашу функцию с промисом. Повесится на неё через then() и распечатать все URL после завершения парсинга.
getUrls( sitemap ).then( ( urls ) => {
console.log( urls );
} );