Запуск краулера в облаке
Платформа Apify
Crawlee разработан компанией Apify - платформой для веб-скрапинга и автоматизации. Можно сказать, что это родной дом для проектов Crawlee. В этом разделе вы узнаете, как развернуть краулер всего за несколько простых шагов. Вы можете развернуть проект Crawlee где угодно, но использование платформы Apify обеспечит наилучший опыт работы.
Если вы хотите развернуть ваш проект Crawlee на других платформах, ознакомьтесь с разделом Развертывание.
За несколько простых шагов вы можете превратить ваш проект Crawlee в так называемый Actor. Actors - это бессерверные микроприложения, которые легко разрабатывать, запускать, делиться и интегрировать. Инфраструктура, прокси и хранилища готовы к использованию. Узнайте больше об Actors.
Мы начали это руководство с использования Crawlee CLI для создания проекта - он предлагает базовые шаблоны Crawlee, включая готовый Dockerfile
. Если вы знаете, что будете развертывать свой проект на платформе Apify, возможно, стоит начать с Apify CLI. Он также предлагает несколько шаблонов проектов, и все они сразу готовы к использованию на платформе Apify.
Зависимости
Первым шагом будет установка двух новых зависимостей:
-
Apify SDK - набор инструментов для работы с платформой Apify. Это позволит нам подключить хранилища (например,
RequestQueue
иDataset
) к облачным продуктам Apify. Это будет зависимостью нашего Node.js проекта.npm install apify
-
Apify CLI - инструмент командной строки, который поможет нам с аутентификацией и развертыванием. Это будет глобально установленный инструмент, вы установите его только один раз и будете использовать во всех ваших проектах Crawlee/Apify.
npm install -g apify-cli
Вход на платформу Apify
Следующим шагом будет создание аккаунта Apify. Не беспокойтесь, у нас есть бесплатный тариф, поэтому вы можете попробовать все перед покупкой! После создания аккаунта пора войти в систему с помощью только что установленного Apify CLI. Вам понадобится персональный токен доступа, который можно найти на странице https://console.apify.com/account#/integrations.
apify login
Настройка кода
Теперь, когда ваш аккаунт настроен, нужно немного изменить код. Мы будем использовать Apify SDK, который поможет нам подключить хранилища Crawlee (например, RequestQueue
) к их аналогам на платформе Apify - иначе Crawlee будет хранить все только в памяти.
Откройте файл src/main.js
(или src/main.ts
, если вы использовали шаблон TypeScript), добавьте Actor.init()
в начало вашего основного скрипта и Actor.exit()
в конец. Не забудьте использовать await
для этих вызовов, так как обе функции асинхронные. Ваш код должен выглядеть так:
import { Actor } from 'apify';
import { PlaywrightCrawler, log } from 'crawlee';
import { router } from './routes.mjs';
await Actor.init();
// Лучше установить через переменную окружения CRAWLEE_LOG_LEVEL
// или через параметры конфигурации. Это просто для демонстрации 😈
log.setLevel(log.LEVELS.DEBUG);
log.debug('Настройка краулера.');
const crawler = new PlaywrightCrawler({
// Вместо длинного requestHandler с
// условными операторами мы предоставляем экземпляр маршрутизатора
requestHandler: router,
});
await crawler.run(['https://warehouse-theme-metal.myshopify.com/collections']);
await Actor.exit();
Вызов Actor.init()
настроит Crawlee на использование API Apify вместо стандартного интерфейса хранения в памяти. Он также настраивает несколько других вещей, например, прослушивание событий платформы через веб-сокеты. Вызов Actor.exit()
затем обеспечивает корректное завершение работы - он закрывает открытые дескрипторы, созданные вызовом Actor.init()
, без чего процесс Node.js застрял бы.
Actor.init()
с переменными окруженияВызов Actor.init()
работает в зависимости от переменных окружения, а именно от переменной APIFY_IS_AT_HOME
, которая установлена в true
на платформе Apify. Это означает, что ваш проект будет работать так же локально, но будет использовать API Apify при развертывании на платформе Apify.
Инициализация проекта
Вам также нужно будет инициализировать проект для Apify, для этого снова используйте Apify CLI:
apify init
Это создаст папку .actor
и файл actor.json
внутри нее - этот файл содержит конфигурацию, относящуюся к платформе Apify, а именно имя Actor, версию, тег сборки и несколько других параметров. Ознакомьтесь с соответствующей документацией, чтобы увидеть все различные параметры, которые вы можете там настроить.
Отправляем в production!
И это все, ваш проект теперь готов к публикации на платформе Apify. Вы можете еще раз использовать Apify CLI для этого:
apify push
Эта команда создаст архив вашего проекта, загрузит его на платформу Apify и инициирует сборку Docker. После завершения вы получите ссылку на ваш новый Actor на платформе.
Изучение веб-скрапинга
Если вы хотите узнать больше о веб-скрапинге и автоматизации браузера, посетите Apify Academy. Там полно курсов и руководств по этой теме. От начального до продвинутого уровня. И самое лучшее: Это бесплатно и с открытым исходным кодом ❤️
Если вы хотите сделать еще один проект, ознакомьтесь с нашим руководством по созданию скрапера HackerNews с использованием Crawlee.
Спасибо! 🎉
Вот и все! Спасибо, что прочитали все введение, и если что-то не так, пожалуйста, 🙏 сообщите нам об этом на GitHub или в нашем сообществе Discord. Удачного скрапинга! 👋