Node.js, Express를 사용하여 간단한 웹 크롤러 만들기

스파이더라고도 알려진 웹 크롤러(Web crawler)는 인터넷을 탐색하고, 웹사이트를 방문하고, 다양한 목적으로 데이터를 추출하는 자동화된 프로그램입니다. 웹 크롤러를 구축하는 것은 복잡한 작업일 수 있지만 올바른 도구와 지침을 사용하면 보람 있는 경험이 될 수 있습니다.

이 글에서는 Node.js, Express 및 TypeScript를 사용하여 간단한 웹 크롤러를 구축하는 방법을 살펴보겠습니다.

1. 프로젝트 설정

시작하려면 새 Node.js 프로젝트를 만들고 필요한 종속성을 설치해야 합니다. 우리는 다음 패키지를 사용할 것입니다.

  1. Express — 쉽게 서버를 생성하고 HTTP 요청을 처리할 수 있게 해주는 인기 있는 Node.js 웹 프레임워크입니다.
  2. Cheerio — HTML 및 XML 문서를 탐색하고 조작할 수 있게 해주는 jQuery와 유사한 Node.js용 라이브러리입니다.
  3. 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import express, { Request, Response } from 'express';

const app = express();
const port = 3000;

app.get('/', (req: Request, res: Response) => {
res.send('Welcome to the Web Crawler');
});

app.get('/crawl', (req: Request, res: Response) => {
// Add code for crawling here
});

app.listen(port, () => {
console.log(`Server running on port ${port}`);
});

이 코드는 새로운 Express 애플리케이션을 생성하고 //crawl이라는 두 가지 경로를 정의합니다. / 경로는 단순히 사용자에게 환영 메시지를 반환하는 반면 /crawl 경로는 크롤링 프로세스를 시작하는 데 사용됩니다.

3. 웹사이트 크롤링

이제 서버를 설정했으므로 웹사이트 크롤링을 시작할 수 있습니다. 이 예에서는 Google 홈페이지를 크롤링하고 페이지 제목을 추출합니다.

/crawl 경로 내에 다음 코드를 추가합니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import request from 'request';
import cheerio from 'cheerio';

app.get('/crawl', (req: Request, res: Response) => {
const url = 'https://www.google.com';

request(url, (error, response, html) => {
if (!error && response.statusCode == 200) {
const $ = cheerio.load(html);
const title = $('title').text();
res.send(`The title of ${url} is: ${title}`);
} else {
res.send(`Error crawling ${url}`);
}
});
});

이 코드는 HTTP GET 요청을 지정된 URL로 보내고 HTML 응답을 Cheerio 개체에 로드합니다. 그런 다음 Cheerio를 사용하여 페이지 제목을 추출하고 이를 사용자에게 응답으로 다시 보낼 수 있습니다.

Share