CoderCastrov logo
CoderCastrov
Cheeriojs - Парсер

Начало работы с парсингом с использованием Cheerio JS

Начало работы с парсингом с использованием Cheerio JS
просмотров
2 мин чтение
#Cheeriojs - Парсер

Полное руководство по парсингу с использованием Cheerio JS


Введение

В настоящее время я работаю над проектом, который сильно зависит от Cheerio JS, и я узнал много уроков по пути; если вы являетесь экспертом по JQuery, то Cheerio JS будет интуитивно понятен для вас, но для остальных разработчиков это неясная и эзотерическая библиотека. Просто посмотрите на документацию.

Будут использоваться следующие библиотеки:

Пример веб-сайта, с которого будет производиться парсинг, - страница goodreads (надеюсь, она останется доступной).

Перед продолжением вы должны изучить HTML-код сайта.

Парсинг

Для успешного парсинга сайта необходим только подмножество всей библиотеки Cheerio JS. Поэтому это не полный обзор всей библиотеки, а только тех ее частей, которые относятся к парсингу.

Загрузка

Прежде чем использовать Cheerio, необходимо загрузить HTML. Чтобы загрузить HTML в Cheerio, вы должны получить HTML-страницу веб-сайта, который вы хотите спарсить. Это можно сделать следующим образом:

data содержит HTML-страницу, чтобы загрузить ее в Cheerio, вы должны использовать:

$ - это экземпляр объекта CheerioAPI и также называется функцией запроса.

Запросы

Получение названия книги

Предположим, вы хотите получить название книги, родительским элементом названия является элемент h1 с идентификатором "bookTitle".

Для этого достаточно выполнить следующий код:

const bookTitle = document.querySelector("#bookTitle").textContent;

Этот метод работает в большинстве случаев, но в некоторых случаях может не сработать, поэтому вам придется обойти DOM до тех пор, пока не достигнете нужного узла.

В некоторых случаях это также может не сработать, поэтому вы можете использовать другие методы.

Получение изображения книги

Предположим теперь, что вы хотите получить URL изображения книги, книга находится внутри div с классом "bookCoverContainer" и само изображение является элементом img с идентификатором "coverImage".

Чтобы получить ссылку на изображение, вы можете использовать следующий код:

const coverImage = document.querySelector(".bookCoverContainer img#coverImage").src;

или просто

const coverImage = document.getElementById("coverImage").src;

Получение среднего количества звезд

Давайте сделаем это немного интереснее. Предположим, вы хотите получить средний рейтинг книги, все комментарии находятся внутри div с идентификатором "bookReviews", каждый комментарий имеет span с классом "staticStars" и атрибутом title, который может быть одним из следующих значений:

  • "Очень плохо"
  • "Плохо"
  • "Средне"
  • "Хорошо"
  • "Отлично"

Чтобы получить среднее количество звезд для книги, вам нужно перебрать все комментарии и разделить сумму их звезд на количество комментариев.

Результат составил 4.03.

Вы можете узнать больше о запросах в документации по JQuery

Заключение

Вот все, что вам нужно, чтобы начать парсить с помощью Cheerio JS! Парсинг больше связан с креативностью и экспериментами, чем с хитростью алгоритмов (большинство функций уже написаны для вас), и возможности безграничны, так что идите и парсите.

Советы и заметки

  • Вы должны изменить User-Agent, чтобы выглядеть менее подозрительно.

  • Обход DOM с помощью функции children() подвержен ошибкам и выглядит неряшливо, поэтому вам следует написать функцию, которая разбирает текст в нужный вам элемент. Моя функция выглядит так:

Вы можете использовать ее так:

  • Если вы щелкнете правой кнопкой мыши на любой странице и выберете "Просмотреть исходный код страницы", откроется новая вкладка с исходным кодом веб-сайта, который будет отображаться красиво.