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

Быстрый старт

В этом кратком руководстве вы научитесь использовать Crawlee для веб-скрапинга всего за пару минут. Чтобы глубже разобраться в работе Crawlee, прочитайте Введение - подробное пошаговое руководство по созданию вашего первого скрапера.

Выберите свой краулер

Crawlee предлагает три основных класса краулеров: CheerioCrawler, PuppeteerCrawler и PlaywrightCrawler. Все классы используют одинаковый интерфейс для максимального удобства при переключении между ними.

CheerioCrawler

Это простой HTTP-краулер. Он анализирует HTML с помощью библиотеки Cheerio и использует специализированный HTTP-клиент got-scraping, который маскируется под браузер. Он очень быстрый и эффективный, но не может обрабатывать JavaScript.

PuppeteerCrawler

Этот краулер использует безголовый браузер для обхода, управляемый библиотекой Puppeteer. Он может управлять как Chromium, так и Chrome. Puppeteer является де-факто стандартом в автоматизации безголовых браузеров.

PlaywrightCrawler

Playwright является более мощным и полным наследником Puppeteer. Он может управлять Chromium, Chrome, Firefox, Webkit и многими другими браузерами. Если вы не знакомы с Puppeteer, и вам нужен безголовый браузер, выберите Playwright.

before you start

Для работы Crawlee требуется Node.js версии 16 или выше.

Установка с помощью Crawlee CLI

Самый быстрый способ начать работу с Crawlee - использовать Crawlee CLI и выбрать пример для начинающих. CLI установит все необходимые зависимости и добавит базовый код для экспериментов.

npx crawlee create my-crawler

После завершения установки вы можете запустить краулер следующим образом:

cd my-crawler && npm start

Ручная установка

Вы можете добавить Crawlee в любой проект Node.js, выполнив команду:

npm install crawlee

Сканирование

Запустите следующий пример для рекурсивного сканирования веб-сайта Crawlee с помощью выбранного краулера.

Не забудьте про импорты модулей

Чтобы запустить пример, добавьте параметр "type": "module" в ваш package.json или скопируйте код в файл с расширением .mjs. Это позволит использовать операторы import в Node.js. Подробнее см. в документации Node.js.

Run on
import { CheerioCrawler, Dataset } from 'crawlee';

// CheerioCrawler выполняет веб-скрейпинг с помощью HTTP-запросов
// и парсит HTML с использованием библиотеки Cheerio
const crawler = new CheerioCrawler({
// Используем requestHandler для обработки каждой посещенной страницы
async requestHandler({ request, $, enqueueLinks, log }) {
const title = $('title').text();
log.info(`Title of ${request.loadedUrl} is '${title}'`);

// Сохраняем результаты в формате JSON в директорию ./storage/datasets/default
await Dataset.pushData({ title, url: request.loadedUrl });

// Извлекаем ссылки с текущей страницы
// и добавляем их в очередь для обработки
await enqueueLinks();
},

// Ограничиваем количество запросов для безопасности и ускорения тестирования
maxRequestsPerCrawl: 50,
});

// Добавляем первый URL в очередь и запускаем краулер
await crawler.run(['https://crawlee.dev']);

При запуске примера вы увидите, как Crawlee автоматизирует процесс извлечения данных в вашем терминале.

INFO  CheerioCrawler: Starting the crawl
INFO CheerioCrawler: Title of https://crawlee.dev/ is 'Crawlee · Build reliable crawlers. Fast. | Crawlee'
INFO CheerioCrawler: Title of https://crawlee.dev/docs/examples is 'Examples | Crawlee'
INFO CheerioCrawler: Title of https://crawlee.dev/docs/quick-start is 'Quick Start | Crawlee'
INFO CheerioCrawler: Title of https://crawlee.dev/docs/guides is 'Guides | Crawlee'

Запуск браузеров с графическим интерфейсом

Браузеры, управляемые Puppeteer и Playwright, по умолчанию запускаются в безголовом режиме (без видимого окна). Вы можете переключиться в режим с графическим интерфейсом, добавив опцию headless: false в конструктор краулера. Это полезно на этапе разработки, когда вы хотите видеть, что происходит в браузере.

Run on
import { PlaywrightCrawler, Dataset } from 'crawlee';

const crawler = new PlaywrightCrawler({
async requestHandler({ request, page, enqueueLinks, log }) {
const title = await page.title();
log.info(`Title of ${request.loadedUrl} is '${title}'`);
await Dataset.pushData({ title, url: request.loadedUrl });
await enqueueLinks();
},
// Когда режим headless отключен, краулер
// будет работать с видимым окном браузера.
headless: false,

// Ограничим количество запросов для безопасности и скорости тестирования.
maxRequestsPerCrawl: 50,
});

// Добавим первый URL в очередь и запустим краулер.
await crawler.run(['https://crawlee.dev']);

При запуске примера кода вы увидите, как автоматизированный браузер быстро просматривает веб-сайт Crawlee.

примечание

Для демонстрации мы замедлили работу краулера, но в реальном использовании он работает очень быстро.

An image showing off Crawlee scraping the Crawlee website using Puppeteer/Playwright and ChromiumAn image showing off Crawlee scraping the Crawlee website using Puppeteer/Playwright and Chromium

Результаты

Crawlee сохраняет данные в директорию ./storage в вашей текущей рабочей директории. Результаты сканирования будут доступны в виде JSON-файлов в ./storage/datasets/default/*.json.

./storage/datasets/default/000000001.json
{
"url": "https://crawlee.dev/",
"title": "Crawlee · The scalable web crawling, scraping and automation library for JavaScript/Node.js | Crawlee"
}
подсказка

Вы можете изменить директорию хранения, установив переменную окружения CRAWLEE_STORAGE_DIR.

Примеры и дополнительная информация

Больше примеров, демонстрирующих различные возможности Crawlee, вы найдете в разделе Примеры документации. Чтобы лучше понять Crawlee и его компоненты, рекомендуем прочитать пошаговое руководство Введение.

Связанные ссылки