✔️ 웹 스크래핑이란?
웹 스크래핑이란 웹 페이지에서 원하는 데이터를 추출하는 작업을 말합니다. 예를 들어 다음과 같은 정보들을 수집할 수 있어요.
- 쇼핑몰 상품의 이름, 가격, 후기
- 뉴스 사이트의 기사 제목, 본문, 작성일
- 날씨 사이트의 오늘의 날씨, 최고·최저 기온
- 블로그 글의 제목, 작성자, 조회 수 등
이처럼 사용자가 원하는 정보만 골라내어 자동으로 저장하거나 가공할 수 있기 때문에 많은 분야에서 유용하게 활용됩니다.
🤖 웹 크롤링과의 차이점은?
웹 스크래핑과 비슷한 용어로 **웹 크롤링(Web Crawling)**이 있습니다.
두 개념은 비슷하지만 약간의 차이가 있어요.
구분 웹 스크래핑 웹 크롤링
| 목적 | 특정 데이터 추출 | 전체 사이트 구조 파악 및 링크 수집 |
| 방식 | 원하는 영역만 수집 | 사이트 전체를 순회하며 링크를 따라감 |
| 예시 | 상품명, 가격 추출 | 모든 페이지 링크 수집 후 전체 저장 |
웹 스크래핑은 '부분 추출', 웹 크롤링은 '전체 탐색'이라고 생각하면 이해하기 쉬워요.
보통은 크롤러(또는 스파이더)라는 프로그램이 크롤링을 통해 데이터를 수집하고, 그중 필요한 정보만 스크래핑하는 구조입니다.
🧰 Node.js로 웹 스크래핑 준비하기
자바스크립트는 원래 웹 브라우저에서 동작하는 언어이지만, Node.js를 사용하면 서버 측에서도 실행할 수 있습니다.
즉, 브라우저 없이도 데이터를 요청하고 가공할 수 있는 환경을 만들어주는 거죠.
1. Node.js 설치
Node.js가 없다면 먼저 설치해 주세요. 아래 공식 홈페이지에서 운영체제에 맞는 설치 파일을 다운로드할 수 있습니다.
설치가 완료되면 아래 명령어로 정상 설치 여부를 확인합니다.
node -v
npm -v
둘 다 버전이 출력되면 준비 완료!
2. 프로젝트 폴더 생성
웹 스크래핑 코드를 관리할 새 폴더를 만들고, 패키지 매니저를 초기화합니다.
mkdir scraper_test
cd scraper_test
npm init -y
package.json 파일이 생성되며, 앞으로 설치할 라이브러리 목록이 이곳에 저장됩니다.
3. 필요한 패키지 설치
웹 스크래핑을 위한 두 가지 핵심 라이브러리를 설치합니다.
- axios: HTTP 요청을 보내기 위한 라이브러리
- cheerio: HTML을 파싱하고 원하는 정보를 jQuery처럼 추출하는 라이브러리
npm install axios cheerio
설치가 끝나면 본격적인 코딩을 시작할 수 있습니다!
💻 웹 스크래핑 실전 예제
이제 실제 웹사이트에서 데이터를 추출하는 간단한 예제를 작성해봅시다.
✔️ 목표
에누리(enuri.com)의 노트북 상품 페이지에서
- 상품명
- 최저가
이 두 가지 정보를 스크래핑해 보겠습니다.
✔️ 코드
const axios = require("axios");
const cheerio = require("cheerio");
const getHtml = async () => {
try {
const html = await axios.get("https://www.enuri.com/detail.jsp?modelno=120367900");
const $ = cheerio.load(html.data);
let title = $("h2.prodinfo__tit").text().trim();
let lowprice = $("div.box__line2").find("span.tx_price em").text().trim();
console.log("상품명: ", title);
console.log("최저가: ", lowprice);
} catch (error) {
console.error("에러 발생:", error.message);
}
};
getHtml();
✔️ 코드 해설
- axios.get(...): 해당 URL의 HTML 코드를 비동기적으로 가져옵니다.
- cheerio.load(html.data): HTML을 파싱해서 jQuery처럼 조작할 수 있도록 만들어줍니다.
- $("선택자").text(): 원하는 요소의 텍스트를 추출합니다.
이 코드를 실행하면 콘솔에 아래와 같은 결과가 출력됩니다.
(웹페이지 구조가 바뀌지 않았다면요!)
상품명: LG전자 울트라PC 15U50Q-GX30K
최저가: 699,000
🔍 셀렉터 찾는 팁
스크래핑에서 가장 중요한 건 바로 **정확한 셀렉터(selector)**를 찾는 것입니다.
이를 위해 크롬 개발자 도구(F12 또는 마우스 우클릭 → 검사)를 사용하세요.
- 원하는 요소 위에서 우클릭 → "검사"
- HTML 구조를 확인
- 고유하거나 특정한 클래스/ID 사용
예: <h2 class="prodinfo__tit">상품명</h2>
이 경우 $("h2.prodinfo__tit").text()로 추출 가능
⚠️ 웹 스크래핑 시 주의사항
웹 스크래핑은 매우 유용하지만, 다음 사항은 꼭 유의해야 합니다.
- robots.txt 확인
웹사이트가 스크래핑을 허용하는지 확인하는 파일입니다. /robots.txt 경로에서 확인 가능 - 서비스 이용약관 위반 주의
일부 사이트는 데이터 무단 수집을 금지하고 있습니다. - 과도한 요청 금지
너무 자주 요청하면 서버에 부하를 주거나 차단될 수 있습니다. setTimeout, delay, proxy 등을 적절히 사용하세요. - 사이트 구조 변경에 대비
셀렉터가 바뀌면 코드가 작동하지 않기 때문에 정기적인 점검이 필요합니다.
✅ 마무리
오늘은 Node.js 환경에서 자바스크립트를 활용해 웹 스크래핑을 시작하는 방법을 알아보았습니다.
코드를 따라 해보셨다면, 이미 여러분은 기본적인 웹 스크래핑 개발자가 되신 거예요!
웹 스크래핑은 단순히 데이터를 긁어오는 기술이 아니라,
정보를 자동화하고 데이터 기반의 의사결정을 가능하게 만드는 강력한 무기입니다.
📦 다음 스텝으로는 다음과 같은 주제를 연습해보세요.
- 여러 상품 페이지에서 반복적으로 정보 추출하기 (반복문, 배열 활용)
- 스크래핑한 데이터를 CSV나 엑셀로 저장하기
- 스케줄링을 통해 정기적으로 정보 수집하기 (node-cron 등)
'정책' 카테고리의 다른 글
| Node.js 동기와 비동기의 차이 완벽 이해하기 (3) | 2025.07.26 |
|---|---|
| 왓챠 영화 추천 🎬 여름의 열기처럼 치열한 성장 무비 5편 (6) | 2025.07.26 |
| 자바스크립트 배열 합치기 3가지 방법: concat, spread, push 완전 정복 (2) | 2025.07.25 |
| javascript:void(0) 완벽 정리 – 자바스크립트 링크 막기 방법과 그 이유 (3) | 2025.07.25 |
| Node.js Express에서 POST 방식으로 데이터 전송하기 – EJS 템플릿 활용 완전정복 (2) | 2025.07.25 |