본문으로 건너뛰기

클라우드에서 크롤러 실행하기

Apify 플랫폼

Crawlee는 웹 스크래핑과 자동화 플랫폼인 Apify에서 개발되었습니다. Crawlee 프로젝트의 본거지라고 할 수 있죠. 이 섹션에서는 몇 가지 간단한 단계를 통해 크롤러를 배포하는 방법을 알아보겠습니다. Crawlee 프로젝트는 어디에나 배포할 수 있지만, Apify 플랫폼을 사용하면 가장 좋은 경험을 얻을 수 있습니다.

다른 플랫폼에 Crawlee 프로젝트를 배포하고 싶다면, 배포 섹션을 확인해보세요.

몇 가지 간단한 단계를 통해 Crawlee 프로젝트를 이른바 Actor로 변환할 수 있습니다. Actor는 개발, 실행, 공유 및 통합이 쉬운 서버리스 마이크로 앱입니다. 인프라, 프록시, 스토리지가 모두 준비되어 있습니다. Actor에 대해 자세히 알아보기

프로젝트 설정을 위한 Crawlee CLI와 Apify CLI 중 선택하기

이 가이드에서는 Crawlee CLI를 사용하여 프로젝트를 시작했습니다 - 기본 Crawlee 템플릿과 미리 준비된 Dockerfile을 제공합니다. Apify 플랫폼에 프로젝트를 배포할 계획이라면, Apify CLI로 시작하는 것이 좋을 수 있습니다. 이 또한 여러 프로젝트 템플릿을 제공하며, 모두 Apify 플랫폼에서 바로 사용할 수 있도록 설정되어 있습니다.

의존성 설치

첫 번째 단계는 두 가지 새로운 의존성을 설치하는 것입니다:

  • Apify SDK: Apify 플랫폼 작업을 위한 도구 모음입니다. 스토리지(RequestQueueDataset 등)를 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 파일(TypeScript 템플릿을 사용했다면 src/main.ts)을 열고 메인 스크립트 시작 부분에 Actor.init()을, 끝 부분에 Actor.exit()을 추가하세요. 두 함수 모두 비동기이므로 await를 잊지 마세요. 코드는 다음과 같아야 합니다:

src/main.js
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({
// if 절이 있는 긴 requestHandler 대신
// router 인스턴스를 제공합니다.
requestHandler: router,
});

await crawler.run(['https://warehouse-theme-metal.myshopify.com/collections']);

await Actor.exit();

Actor.init() 호출은 Crawlee가 기본 메모리 스토리지 인터페이스 대신 Apify API를 사용하도록 설정합니다. 또한 웹소켓을 통한 플랫폼 이벤트 수신 등 다른 설정도 합니다. Actor.exit() 호출은 정상적인 종료를 처리합니다 - Actor.init() 호출로 생성된 열린 핸들을 닫습니다. 이것이 없으면 Node.js 프로세스가 멈춰있게 됩니다.

환경 변수에 따른 Actor.init() 동작 이해하기

Actor.init() 호출은 환경 변수에 따라 조건부로 작동합니다. 특히 Apify 플랫폼에서 true로 설정되는 APIFY_IS_AT_HOME 환경 변수에 따라 달라집니다. 즉, 프로젝트는 로컬에서는 동일하게 작동하지만 Apify 플랫폼에 배포되면 Apify API를 사용하게 됩니다.

프로젝트 초기화하기

Apify용 프로젝트를 초기화해야 합니다. Apify CLI를 다시 사용하세요:

apify init

이 명령은 .actor 폴더와 그 안에 actor.json 파일을 생성합니다 - 이 파일은 Actor 이름, 버전, 빌드 태그 등 Apify 플랫폼과 관련된 설정을 포함합니다. 관련 문서에서 설정할 수 있는 모든 항목을 확인하세요.

배포하기!

이제 끝났습니다! 프로젝트를 Apify 플랫폼에 게시할 준비가 되었습니다. Apify CLI를 한 번 더 사용하세요:

apify push

이 명령은 프로젝트를 압축하여 Apify 플랫폼에 업로드하고 Docker 빌드를 시작합니다. 완료되면 플랫폼에서 새로운 Actor의 링크를 받게 됩니다.

웹 스크래핑에 대해 더 배우기

Apify Academy 리소스 살펴보기

웹 스크래핑과 브라우저 자동화에 대해 더 배우고 싶다면 Apify Academy를 확인해보세요. 초보자부터 고급자까지를 위한 강좌와 튜토리얼이 가득합니다. 가장 좋은 점은: 무료이고 오픈소스라는 것입니다 ❤️

또 다른 프로젝트를 해보고 싶다면, Crawlee를 사용한 HackerNews 스크래퍼 만들기 튜토리얼을 확인해보세요.

감사합니다! 🎉

여기까지입니다! 전체 소개를 읽어주셔서 감사합니다. 잘못된 부분이 있다면 GitHubDiscord 커뮤니티에서 알려주세요. 즐거운 스크래핑 되세요! 👋