
Библиотека для веб-скрейпинга и автоматизации браузера на Node.js для создания надёжных краулеров с поддержкой HTTP и headless-браузеров, ротацией прокси и имитацией человеческого отпечатка.
Crawlee обеспечивает полный цикл краулинга и скрапинга и помогает создавать надёжные скраперы. Быстро.
Ваши краулеры будут выглядеть как люди и останутся незамеченными для современных систем защиты от ботов даже при конфигурации по умолчанию. Crawlee даёт вам инструменты для обхода веб-сайтов в поисках ссылок, извлечения данных и их сохранения на диск или в облако, оставаясь настраиваемым под нужды вашего проекта.
Crawlee доступен как NPM-пакет crawlee.
👉 Полная документация, руководства и примеры на сайте проекта Crawlee 👈
Предпочитаете 🐍 Python вместо JavaScript? 👉 Ознакомьтесь с Crawlee для Python 👈.
Рекомендуем посетить вводное руководство в документации Crawlee для получения дополнительной информации.
Crawlee требует Node.js 22.13 или выше.
Самый быстрый способ попробовать Crawlee — использовать Crawlee CLI и выбрать пример для начала работы. CLI установит все необходимые зависимости и добавит шаблонный код для экспериментов.
npx crawlee create my-crawler
cd my-crawler
npm start
Если вы предпочитаете добавить Crawlee в свой собственный проект, попробуйте пример ниже. Поскольку в нём используется PlaywrightCrawler, нам также нужно установить Playwright. Он не входит в состав Crawlee, чтобы уменьшить размер установки.
npm install crawlee playwright
import { PlaywrightCrawler, Dataset } from 'crawlee';
// PlaywrightCrawler crawls the web using a headless
// browser controlled by the Playwright library.
const crawler = new PlaywrightCrawler({
// Use the requestHandler to process each of the crawled pages.
async requestHandler({ request, page, enqueueLinks, log }) {
const title = await page.title();
log.info(`Title of ${request.loadedUrl} is '${title}'`);
// Save results as JSON to ./storage/datasets/default
await Dataset.pushData({ title, url: request.loadedUrl });
// Extract links from the current page
// and add them to the crawling queue.
await enqueueLinks();
},
// Uncomment this option to see the browser window.
// headless: false,
});
// Add first URL to the queue and start the crawl.
await crawler.run(['https://crawlee.dev']);
По умолчанию Crawlee сохраняет данные в ./storage в текущем рабочем каталоге. Вы можете переопределить этот каталог через конфигурацию Crawlee. Подробности см. в руководстве по конфигурации, хранилище запросов и хранилище результатов.
Мы предоставляем автоматические бета-сборки для каждого изменения кода, влитого в Crawlee. Вы можете найти их в npm в списке релизов. Если вы хотите протестировать новые функции или исправления ошибок до их выпуска, не стесняйтесь установить бета-сборку следующим образом:
npm install crawlee@next
Если вы также используете Apify SDK, вам нужно указать переопределения зависимостей в файле package.json, чтобы не получить несколько установленных версий Crawlee:
{
"overrides": {
"apify": {
"@crawlee/core": "$crawlee",
"@crawlee/types": "$crawlee",
"@crawlee/utils": "$crawlee"
}
}
}
Crawlee имеет открытый исходный код и работает где угодно, но поскольку он разработан компанией Apify, его легко настроить на платформе Apify и запустить в облаке. Посетите сайт Apify SDK, чтобы узнать больше о развёртывании Crawlee на платформе Apify.
Если вы обнаружите ошибку или проблему с Crawlee, пожалуйста, создайте issue на GitHub. По вопросам вы можете обратиться на Stack Overflow, в GitHub Discussions или присоединиться к нашему серверу Discord.
Мы приветствуем ваш вклад в код, и вы будете восхваляемы в веках! Если у вас есть идеи по улучшению, создайте issue или отправьте pull request. Руководство по участию и кодекс поведения см. в CONTRIBUTING.md.
Этот проект лицензирован под Apache License 2.0 — подробности см. в файле LICENSE.md.