[typescript] 타입스크립트와 Node.js를 이용한 크롤링 및 웹 스크래핑 사례

크롤링과 웹 스크래핑은 웹페이지에서 정보를 추출하여 새로운 데이터를 만드는 과정을 의미합니다. 이번 블로그에서는 타입스크립트와 Node.js를 사용하여 간단한 크롤링 및 웹 스크래핑을 수행하는 방법을 살펴보겠습니다.

1. 프로젝트 설정

먼저, 타입스크립트 프로젝트를 설정합니다. 다음 명령어로 타입스크립트 프로젝트를 초기화합니다.

mkdir web-scraper
cd web-scraper
npm init -y
npm install typescript ts-node axios cheerio @types/cheerio
npx tsc --init

2. 크롤링 코드 작성

크롤링을 위해 Axios와 Cheerio를 사용합니다. Axios는 HTTP 요청을 보내고 받아오는 데 사용되며, Cheerio는 HTML을 파싱하는 데 사용됩니다.

다음은 간단한 크롤링 코드의 예시입니다.

import axios from 'axios';
import cheerio from 'cheerio';

async function fetchData(url: string) {
  const result = await axios.get(url);
  return cheerio.load(result.data);
}

async function getWebContent() {
  const url = 'http://example.com';
  const $ = await fetchData(url);
  console.log($('title').text());
}

getWebContent();

위 코드는 Axios를 사용하여 웹페이지의 HTML을 가져온 후, Cheerio를 사용하여 해당 웹페이지의 title을 콘솔에 출력하는 예시입니다.

3. 웹 스크래핑 코드 작성

이제 웹 스크래핑을 통해 원하는 데이터를 추출하는 코드를 작성해 보겠습니다.

import axios from 'axios';
import cheerio from 'cheerio';

async function fetchData(url: string) {
  const result = await axios.get(url);
  return cheerio.load(result.data);
}

async function getWebContent() {
  const url = 'http://example.com';
  const $ = await fetchData(url);
  const newsHeadlines: string[] = [];
  $('h2').each((index, element) => {
    newsHeadlines.push($(element).text());
  });
  console.log(newsHeadlines);
}

getWebContent();

위 코드는 Axios로 HTML을 가져온 후, Cheerio를 사용하여 h2 태그에 있는 뉴스 헤드라인을 추출하는 예시입니다.

4. 실행

타입스크립트 파일은 ts-node를 사용하여 바로 실행할 수 있습니다.

npx ts-node filename.ts

이로써 타입스크립트와 Node.js를 이용한 간단한 크롤링 및 웹 스크래핑을 위한 프로젝트 설정과 코드 작성 방법을 살펴보았습니다. 이를 응용하여 원하는 웹페이지에서 데이터를 추출하는 다양한 기능을 구현할 수 있습니다.

참고 문헌: