Руководство по 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
на соответствующих вкладках.