Создание веб-скрапера на Cheerio
Загрузите веб-страницу, извлеките нужные данные с помощью селекторов в стиле jQuery и сохраните их в JSON или в базу данных.
$('selector'), что вы знаете по jQuery, но на сервере и без браузера. Вы указываете на элементы, читаете их текст и атрибуты и превращаете беспорядочную страницу в аккуратные структурированные записи.
- объяснить конвейер загрузить -> разобрать -> выбрать -> извлечь -> сохранить;
- загружать HTML в Cheerio и запрашивать его CSS-селекторами;
- перебирать повторяющиеся элементы, собирая массив записей;
- аккуратно читать текст, атрибуты и вложенные узлы;
- сохранять результаты в JSON-файл или таблицу базы данных;
- скрапить вежливо -- уважать
robots.txt, ограничения частоты и ошибки; - решать, когда настоящий API лучше скрапинга.
1. Что такое скрапинг и почему Cheerio?
Не каждый сайт предлагает удобный JSON API. Иногда единственное место, где живёт цена, заголовок или характеристика товара, -- это HTML, который отображает браузер. Скрапинг -- это практика скачивания такого HTML и программного извлечения полезных частей.
В более ранней теме Потребление сторонних API вы загружали JSON с эндпоинта -- данные приходили уже структурированными. Скрапинг -- родственный навык: данные приходят как документ, созданный для человеческих глаз, и ваша задача -- навязать ему структуру. Загрузка та же, а разбор совсем другой.
Cheerio -- это быстрая, зрелая библиотека, которая разбирает HTML в дерево узлов и предоставляет API, совместимый с jQuery. Она не выполняет JavaScript, не загружает изображения и ничего не отрисовывает -- это просто парсер плюс селекторы. Поэтому она крошечная и быстрая по сравнению с полноценным headless-браузером вроде Puppeteer. Если нужные данные присутствуют в сыром HTML, который присылает сервер, Cheerio -- правильный инструмент. Если же страница строит содержимое клиентским JavaScript после загрузки, вам понадобится инструмент на основе браузера (об этом дальше).
Аналогия. Представьте HTML-страницу как печатную газету. Браузер -- это читатель, видящий свёрстанные полосы. Cheerio -- это ножницы и указатель: они позволяют сразу перейти к "каждому заголовку в спортивном разделе" и вырезать их, игнорируя рекламу и вёрстку, которые вам не важны.