[javascript] Express.js에서의 크롤링 구현 방법

크롤링은 웹 페이지에서 데이터를 수집하고 필요한 정보를 추출하는 프로세스입니다. Express.js는 Node.js를 기반으로 한 웹 애플리케이션 프레임워크로, 크롤링을 구현하기에 적합한 환경을 제공합니다. 이번 포스트에서는 Express.js를 사용하여 크롤링을 구현하는 방법에 대해 알아보겠습니다.

1. Cheerio 설치 및 설정

Cheerio는 Node.js의 HTML 파서로, jQuery와 유사한 문법을 사용하여 웹 페이지에서 원하는 데이터를 추출하는데 사용됩니다. Express.js에서 크롤링을 구현하기 위해 먼저 Cheerio를 설치해야합니다.

npm install cheerio

2. Express 서버 설정

Express.js로 웹 서버를 구성하기 위해 다음과 같이 Express 애플리케이션을 생성합니다.

const express = require('express');
const app = express();

app.listen(3000, () => {
  console.log('서버가 시작되었습니다.');
});

3. 크롤링 로직 작성

이제 크롤링을 수행할 로직을 작성해보겠습니다. 예를 들어, https://example.com에서 제목을 크롤링해오는 예제를 살펴보겠습니다.

const axios = require('axios');
const cheerio = require('cheerio');

app.get('/crawl', async (req, res) => {
  try {
    const response = await axios.get('https://example.com');
    const $ = cheerio.load(response.data);
    
    const title = $('h1').text();
    res.send(title);
  } catch (error) {
    console.error(error);
    res.sendStatus(500);
  }
});

위 코드에서는 axios를 사용하여 https://example.com에 HTTP GET 요청을 보냅니다. 그리고 cheerio를 사용하여 받은 응답 데이터를 파싱합니다. $는 Cheerio 객체를 나타내며, $('h1')h1 태그에 해당하는 요소를 선택합니다. 이후 .text()를 호출하여 해당 요소의 텍스트를 추출합니다.

4. 서버 실행 및 테스트

마지막으로 Express 서버를 실행하고, 구현한 크롤링 로직을 테스트해보겠습니다.

node app.js

웹 브라우저에서 http://localhost:3000/crawl로 접속하면 크롤링한 제목이 나타납니다.

결론

Express.js를 사용하여 크롤링을 구현하는 방법에 대해 알아보았습니다. Cheerio를 이용하여 웹 페이지에서 필요한 데이터를 추출하는 것은 간단하고 효과적인 방법입니다. 하지만 네트워크 상의 데이터를 가져올 때에는 항상 서버 제한 사항과 사용자 정책을 준수해야 함을 유의해야합니다.

참고 자료