TypeScript:
웹 페이지 다운로드하기
How to: (방법)
TypeScript에서 웹 페이지를 다운로드하려면 axios
같은 HTTP 클라이언트 라이브러리를 사용하곤 합니다. 간단한 예제를 통해 살펴봅시다:
import axios from 'axios';
import fs from 'fs';
async function downloadWebPage(url: string, outputFilename: string): Promise<void> {
try {
const response = await axios.get(url);
fs.writeFileSync(outputFilename, response.data);
console.log(`Downloaded and saved to ${outputFilename}`);
} catch (error) {
console.error('Error downloading the web page:', error);
}
}
// 함수 사용 예제
const url = 'http://example.com';
const outputFilename = 'example.html';
downloadWebPage(url, outputFilename);
코드 실행 시 콘솔에 “Downloaded and saved to example.html”이 출력되며, example.html
에 웹 페이지 내용이 담깁니다.
Deep Dive (심층 분석)
초기 웹에서는 웹 페이지 다운로드가 주로 “Save As” 기능을 통해 수동으로 이루어졌습니다. 시간이 흘러, 웹 크롤러나 스크래퍼가 등장해 자동화가 가능해졌고, 서버 사이드 프로그램을 통한 대량 데이터 처리가 일반화되었습니다.
node-fetch
나 request
와 같은 다른 라이브러리도 활용 가능하지만, axios
는 약간 더 나은 API와 오류 처리 기능 때문에 인기가 많습니다. 또한 Promise 기반이며 async/await 패턴과 잘 어울려 현대적인 비동기 패턴을 구현하기 쉽습니다.
내부적으로, axios는 HTTP GET 요청을 통해 데이터를 가져오고 응답의 바디를 파일 시스템에 쓰는 과정을 거칩니다. 브라우저 환경과 달리 Node.js 환경에서는 CORS 제약이 없어 서버 사이드에서 다양한 소스로부터 자유롭게 데이터를 수집할 수 있습니다.
See Also (참고 자료)
- axios GitHub repository: https://github.com/axios/axios
- Node.js fs module documentation: https://nodejs.org/api/fs.html
- MDN Web Docs on web scraping: https://developer.mozilla.org/en-US/docs/Web/HTTP/CORS