스파이더라고도 알려진 웹 크롤러(Web crawler)는 인터넷을 탐색하고, 웹사이트를 방문하고, 다양한 목적으로 데이터를 추출하는 자동화된 프로그램입니다. 웹 크롤러를 구축하는 것은 복잡한 작업일 수 있지만 올바른 도구와 지침을 사용하면 보람 있는 경험이 될 수 있습니다.
이 글에서는 Node.js, Express 및 TypeScript를 사용하여 간단한 웹 크롤러를 구축하는 방법을 살펴보겠습니다.
1. 프로젝트 설정
시작하려면 새 Node.js 프로젝트를 만들고 필요한 종속성을 설치해야 합니다. 우리는 다음 패키지를 사용할 것입니다.
Express
— 쉽게 서버를 생성하고 HTTP 요청을 처리할 수 있게 해주는 인기 있는 Node.js 웹 프레임워크입니다.Cheerio
— HTML 및 XML 문서를 탐색하고 조작할 수 있게 해주는 jQuery와 유사한 Node.js용 라이브러리입니다.Request
— HTTP 요청을 쉽게 보내고 응답을 처리할 수 있게 해주는 간단한 Node.js용 HTTP 클라이언트입니다.
새 Node.js 프로젝트를 생성한 후 다음 명령을 사용하여 패키지를 설치할 수 있습니다.
1 | npm install express cheerio request |
다음을 실행하여 TypeScript를 dev 종속성(devDependencies)으로 설치할 수도 있습니다.
1 | npm install -D typescript @types/node @types/express @types/cheerio @types/request |
2. 서버 설정
이 섹션에서는 HTTP 요청을 수신하고 응답을 반환하는 간단한 Express 서버를 만듭니다. 또한 웹 크롤러가 크롤링을 시작할 수 있는 경로를 추가할 것입니다.
먼저 server.ts
라는 새 파일을 만들고 다음 코드를 추가하겠습니다.
1 | import express, { Request, Response } from 'express'; |
이 코드는 새로운 Express 애플리케이션을 생성하고 /
및 /crawl
이라는 두 가지 경로를 정의합니다. /
경로는 단순히 사용자에게 환영 메시지를 반환하는 반면 /crawl
경로는 크롤링 프로세스를 시작하는 데 사용됩니다.
3. 웹사이트 크롤링
이제 서버를 설정했으므로 웹사이트 크롤링을 시작할 수 있습니다. 이 예에서는 Google 홈페이지를 크롤링하고 페이지 제목을 추출합니다.
/crawl
경로 내에 다음 코드를 추가합니다.
1 | import request from 'request'; |
이 코드는 HTTP GET 요청을 지정된 URL로 보내고 HTML 응답을 Cheerio 개체에 로드합니다. 그런 다음 Cheerio를 사용하여 페이지 제목을 추출하고 이를 사용자에게 응답으로 다시 보낼 수 있습니다.