Бесплатный вебинар
«как найти любимую работу»
Подарки на 150 000 ₽ за участие
Живой эфир
Записи не будет!
00:00:00:00
дн.ч.мин.сек.

Поиск парсера HTML в Node.js: современные и элегантные решения

Быстрый ответ

Если вам необходимо начать работу в кратчайшие сроки, предпочтите cheerio для парсинга HTML в Node.js. Этот модуль удобен и работа с ним напоминает взаимодействие с jQuery. Установка производится следующим образом:

shell
Скопировать код
npm install cheerio

Для использования cheerio необходимо загрузить HTML и обратиться к элементам с помощью селекторов, аналогично тому как вы делаете это в jQuery:

JS
Скопировать код
const cheerio = require('cheerio');
const $ = cheerio.load('<h1>Заголовок</h1>');

const title = $('h1').text();  // "Заголовок" получаем просто и изящно!
console.log(title);

Такой подход позволяет повторить опыт работы с jQuery на сервере.

Кинга Идем в IT: пошаговый план для смены профессии

Терминатор против Трансформеров: выбор подходящего инструмента

Форсаж: htmlparser2 для быстроты

Если вам нужно быстро проанализировать HTML, как если бы вы были Оптимус Прайм, htmlparser2 обеспечит максимальную скорость за счет использования потокового чтения, что позволяет сэкономить ресурсы и время:

JS
Скопировать код
const htmlparser2 = require('htmlparser2');
const parser = new htmlparser2.Parser({
    onopentag(name) {
        console.log(name); // Выводим имя тега "div", без лишних деталей!
    },
});
parser.write("Здесь ваш HTML");
parser.end();
Подробнее об этом расскажет наш спикер на видео
skypro youtube speaker

Защитник веб-стандартов: parse5 для соблюдения спецификации

Если вы строго придерживаетесь стандартов, то parse5 вам идеально подойдет, поскольку он точно следует алгоритмам спецификации WHATWG по парсингу HTML:

JS
Скопировать код
const parse5 = require('parse5');
const document = parse5.parse('<div class="block">Контент</div>'); // Таким образом, HTML превращается в структуру дерева разбора!

Визуализация

Воспринимайте парсинг HTML в Node.js как сборку мозаики, где каждый отдельный кусочек — это фрагмент HTML:

Markdown
Скопировать код
🧩🗂️ Исходный HTML: <div><p>Привет, мир!</p></div>

Наш «мастер по мозаике» (HTML-парсер) начинает свою работу:

Markdown
Скопировать код
1. Определение элементов: 🧩 <div>, 🧩 <p>, 🧩 текст, 🧩 </p>, 🧩 </div>
2. Создание связей: <div>↩️<p>↩️текст↪️</p>↪️</div>
3. Воссоздание общей картины: 🖼️ [ <div><p>Привет, мир!</p></div> ]

В итоге мы получаем готовое изображение:

Markdown
Скопировать код
🖼️ Результата парсинга:
  📦 <div>
     📑 <p>
        📄 "Привет, мир!"
     📑 </p>
  📦 </div>

И вуаля! Перед вами структурированный HTML, простой и понятный. 🎉

Борьба с динамическим контентом: задействование headless браузеров

Когда речь идет о динамическом контенте, он взаимодействует с помощью JavaScript, в этом случае лучше всего использовать headless браузеры:

  • PhantomJS: Не смотря на то, что он уже не обновляется, эта заслужившая доверие технология до сих пор может вам пригодиться:

    shell
    Скопировать код
    npm install phantomjs-prebuilt
  • Puppeteer: Это современный и надежный инструмент от Google. Он поможет обработать даже самые сложные веб-страницы:

    shell
    Скопировать код
    npm install puppeteer

Если вам необходимо эмулировать действия пользователя, zombie.js превратит ваш сервер в полноценный тестовый стенд:

shell
Скопировать код
npm install zombie

Полезные материалы

  1. Индустриальный стандарт работы с HTML в JavaScript | cheerio — Подробное руководство по использованию cheerio и jQuery на сервере в Node.js.
  2. GitHub – jsdom/jsdom: JavaScript реализация веб-стандартов для Node.js — Познакомьтесь с jsdom, многофункциональным инструментом для обработки HTML.
  3. node-html-parser – npm — Знакомство с node-html-parser — лидером среди HTML-парсеров по скорости.
  4. Puppeteer | Puppeteer — Информация о Puppeteer, мощном инструменте для парсинга и скрапинга SPA.
  5. DOMParser – Веб API | MDN — Детальное руководство по использованию DOMParser для профессионального анализа и сериализации HTML.
  6. Stream | Документация Node.js v21.6.1 — Ознакомьтесь с потоками Node.js для оптимизации процессов парсинга данных.
Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей
Какой модуль лучше всего подходит для быстрого парсинга HTML в Node.js?
1 / 5