[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를 이용한 간단한 크롤링 및 웹 스크래핑을 위한 프로젝트 설정과 코드 작성 방법을 살펴보았습니다. 이를 응용하여 원하는 웹페이지에서 데이터를 추출하는 다양한 기능을 구현할 수 있습니다.
참고 문헌:
- Axios: https://axios-http.com/docs/intro
- Cheerio: https://cheerio.js.org/
- TypeScript: https://www.typescriptlang.org/docs/