Перейти к основному содержимому

Руководство по JSDOMCrawler

JSDOMCrawler - отличный инструмент для скрапинга с использованием Window API.

Как работает краулер

JSDOMCrawler выполняет обход сайтов, отправляя обычные HTTP-запросы к указанным URL-адресам с помощью специализированного HTTP-клиента got-scraping. URL-адреса поступают в краулер через RequestQueue. В ответ он обычно получает HTML-страницы - те же самые, что вы видите в браузере при первой загрузке URL. С помощью опции additionalMimeTypes он также может обрабатывать и другие типы контента.

к сведению

Современные веб-страницы часто не предоставляют весь контент в первоначальном HTML-ответе. Вместо этого первый HTML содержит ссылки на другие ресурсы (CSS и JavaScript), которые загружаются позже и вместе создают финальную страницу. Для работы с такими сайтами используйте PuppeteerCrawler или PlaywrightCrawler.

После получения HTML страницы краулер передает его в JSDOM для парсинга. В результате создается объект window, знакомый фронтенд-разработчикам. С помощью Window API можно выполнять различные операции с HTML страницы, но при скрапинге в основном он используется для поиска определенных HTML-элементов и извлечения их данных.

Пример использования браузерного JavaScript:

// Получить заголовок страницы
document.title; // в браузере
window.document.title; // в JSDOM

Когда использовать JSDOMCrawler

JSDOMCrawler особенно полезен, когда возможностей CheerioCrawler недостаточно. Он предоставляет доступ к полному набору API браузера!

Преимущества:

  • Простая настройка
  • Привычен для фронтенд-разработчиков
  • Возможность манипулировать контентом
  • Автоматически обходит некоторые анти-скрапинг защиты

Недостатки:

  • Медленнее чем CheerioCrawler
  • Не работает с сайтами, требующими JavaScript-рендеринга
  • Может легко перегрузить целевой сайт запросами

Примеры использования Element API

Поиск всех ссылок на странице

Этот код находит все элементы <a> с атрибутом href и извлекает их в массив.

Array.from(document.querySelectorAll('a[href]')).map((a) => a.href);

Другие примеры

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