Привет, замечательный 😎 читатель, сегодня в этой статье я научу тебя, как создать простой и удивительный парсер с помощью Node.js. Так пусть идет.
Итак, сначала настройте среду разработки вашего узла, если нет. Если у вас уже есть поздравление 🎉, вы готовы перейти к следующему шагу…
Просто погрузитесь в технические👨💻 вещи…
Во-первых, нам потребуются некоторые пакеты.
После прочтения названия этих пакетов у вас определенно возникнет вопрос, для чего эти пакеты используются, поэтому я дам вам простые и точные определения.
Axios — HTTP-клиент на основе Promise для браузера и node.js.
Cheerio — быстрая, гибкая и экономичная реализация ядра jQuery, разработанная специально для сервера.
Итак, давайте начнем с реальной сделки…
Откройте любой предпочтительный редактор/IDE. Я использую Visual Studio Code, потому что им легко пользоваться, вот почему…
В редакторе откройте терминал и введите команду-
npm init
После этого вы увидите, что будет создан файл package.json, в котором будет храниться вся ваша конфигурация этих пакетов и их версия. Я не буду углубляться в этот файл пакета слишком глубоко, это для другой статьи.
Откройте файл Package.json, там вы видите объект скрипта с фигурными скобками. Что-то вроде этого
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
}
В объекте Script измените объект, чтобы запустить объект, подобный этому
"scripts": {
"start": "nodemon index.js"
}
Прочитав это вы спросите, зачем я это добавляю и что будет?
Итак, после добавления этого вы можете запустить файл index.js
Если есть ошибка nodemon, которую вы обнаружите, попробуйте сначала установить ее, а затем попробуйте запустить
npm i nodemon
После этого создайте файл javascript index.js и приступим к написанию кода.
Сначала установите пакеты. Axios и cheerio с помощью следующей команды: -
npm i axios
npm i cheerio
После установки пакетов сначала импортируйте пакеты, используя const
const axios = require('axios')
const cheerio = require('cheerio')
и после этого создайте URL-адрес имени переменной, который содержит ссылку на веб-сайт, который вы хотите очистить. Я использую Новости The Guardians для этого урока.
Используя Axios, мы извлекаем эти данные из URL-адреса.
const url ='https://www.theguardian.com/uk'
axios(url)
.then(response =>{
const html = response.data
const ele =cheerio.load(html)
const article =[]
и, используя cheerio, мы манипулируем нужным типом данных, и мы создали переменную ele, которая содержит данные, и массив, содержащий список данных, которые мы извлекаем из URL-адреса.
Мы используем созданную нами переменную ele, содержащую данные
ele('.fc-item__title', html).each(function(){ const title = ele(this).text() const url = ele(this).find('a').attr('href') article.push({ title, url }) })
console.log(article)
Во-первых, посетите веб-сайт, потому что вы должны знать, какой тип данных вам нужен, поэтому вы увидите списки статей, выберите любую статью, проверьте элемент и найдите это имя div из инструмента разработчика.
Хотя я наконец узнал имя div. это вы уже можете видеть в коде, который был .fc-item__title, и мы используем каждую функцию для итерации сбора данных.
Там вы видите две переменные, которые содержат заголовок и URL-адрес, после этой строки вы видите их, есть функция push, которую мы используем в статье из предыдущего кода, вы помните, что мы создали массив статьи, который содержит этот список массива. Таким образом, мы отправляем заголовок и URL-адрес статьи, содержащей эти извлеченные данные. а внизу вы видите console.log() для вывода данных.
Полный код, если вы застряли ❤
const axios = require('axios') const cheerio = require('cheerio')
const url ='https://www.theguardian.com/uk' axios(url) .then(response =>{ const html = response.data const ele =cheerio.load(html) const article =[]
ele('.fc-item__title', html).each(function(){ const title = ele(this).text() const url = ele(this).find('a').attr('href') article.push({ title, url }) })
console.log(article)
}).catch(err=> console.log(err) )
Надеюсь, вы найдете эту статью полезной, и если она поможет вам, не стесняйтесь высказать свое мнение в поле для комментариев, также подпишитесь и поставьте лайк 👍