스파이더라고도 알려진 웹 크롤러(Web crawler)는 인터넷을 탐색하고, 웹사이트를 방문하고, 다양한 목적으로 데이터를 추출하는 자동화된 프로그램입니다. 웹 크롤러를 구축하는 것은 복잡한 작업일 수 있지만 올바른 도구와 지침을 사용하면 보람 있는 경험이 될 수 있습니다.
이 글에서는 Node.js, Express 및 TypeScript를 사용하여 간단한 웹 크롤러를 구축하는 방법을 살펴보겠습니다.
프로젝트 설정
시작하려면 새 Node.js 프로젝트를 만들고 필요한 종속성을 설치해야 합니다. 우리는 다음 패키지를 사용할 것입니다.
Express
— 쉽게 서버를 생성하고 HTTP 요청을 처리할 수 있게 해주는 인기 있는 Node.js 웹 프레임워크입니다.Cheerio
— HTML 및 XML 문서를 탐색하고 조작할 수 있게 해주는 jQuery와 유사한 Node.js용 라이브러리입니다.Request
— HTTP 요청을 쉽게 보내고 응답을 처리할 수 있게 해주는 간단한 Node.js용 HTTP 클라이언트입니다.
새 Node.js 프로젝트를 생성한 후 다음 명령을 사용하여 패키지를 설치할 수 있습니다.
npm install express cheerio request
다음을 실행하여 TypeScript를 dev 종속성(devDependencies)으로 설치할 수도 있습니다.
npm install -D typescript @types/node @types/express @types/cheerio @types/request
서버 설정
이 섹션에서는 HTTP 요청을 수신하고 응답을 반환하는 간단한 Express 서버를 만듭니다. 또한 웹 크롤러가 크롤링을 시작할 수 있는 경로를 추가할 것입니다.
먼저 server.ts
라는 새 파일을 만들고 다음 코드를 추가하겠습니다.
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
경로는 크롤링 프로세스를 시작하는 데 사용됩니다.
웹사이트 크롤링
이제 서버를 설정했으므로 웹사이트 크롤링을 시작할 수 있습니다. 이 예에서는 Google 홈페이지를 크롤링하고 페이지 제목을 추출합니다.
/crawl
경로 내에 다음 코드를 추가합니다.
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를 사용하여 페이지 제목을 추출하고 이를 사용자에게 응답으로 다시 보낼 수 있습니다.
'Backend > NodeJS' 카테고리의 다른 글
[Node.js] Winston 사용하여 로깅하기 (1) | 2024.09.27 |
---|---|
Node.js 와 TypeScript 콜백(callback) 지옥 피하는 방법 (0) | 2023.09.06 |
NVM 설치 및 사용 방법 (0) | 2022.11.13 |
node-gyp 설치 오류 해결 방법 (0) | 2022.10.22 |
npm install 시 gyp ERR! 해결 방법 (1) | 2022.10.18 |
IT 기술과 개발 내용을 포스팅하는 블로그
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!