본문 바로가기

미국유학/Hello 시스템디자인스터디

5월 2일 Web Crawler

 

 

🧱 웹 크롤러 만드는 여정 – 중학생처럼 쉽게 설명


🧩 1단계: “웹페이지를 가져오는” 로봇 만들기

  • 우리가 웹사이트를 열면 그 안에 글이나 사진이 있잖아?
  • 이걸 컴퓨터가 대신 열고 HTML이라는 형식으로 가져오게 만들어
  • 예: https://example.com 을 열어서 거기 글자들을 가져오는 코드

🧪 예시:

python
CopyEdit
import requests html = requests.get("https://example.com").text print(html)

🧩 2단계: 해야 할 주소 목록 만들기 (큐 만들기)

  • “어디 가서 정보 가져올까?” 목록을 저장하는 큐(queue) 라는 줄 세우기 장치를 만들어
  • 예: ["https://a.com", "https://b.com"] 처럼 주소를 저장하고 하나씩 꺼내서 처리해

🧩 3단계: HTML 저장소 만들기 (문서 보관함)

  • 가져온 웹페이지는 나중에 다시 보려고 저장해둬야 해
  • 컴퓨터 안의 파일로 저장하거나 S3 같은 저장소에 올려
  • 예: example_com.html 이라는 이름으로 저장

🧩 4단계: 주소 상태 적어두기 (메모장 만들기)

  • 어떤 주소를 언제 갔다 왔는지, 실패했는지 기록해두는 메모장을 DB나 파일로 만들어
  • 나중에 같은 주소 중복해서 안 가게 하려고!

🧩 5단계: HTML 속 링크 찾아서 다시 줄 세우기

  • 웹페이지 안에는 <a href="..."> 링크가 들어있지?
  • 그걸 컴퓨터가 찾아서 “어? 새로운 주소네!” 하고 다시 큐에 넣는 거야

🧩 6단계: 일하는 애들 나눠서 시키기 (분업)

  • 웹페이지 가져오는 애(Crawler)랑 HTML 파는 애(Parser)를 나눠
  • 가져온 건 저장만 하고, 다른 프로그램이 파싱하게 만들어 (줄서서 기다리는 큐 사용)

🧩 7단계: 실패했을 때 다시 해보기

  • 어떤 사이트는 갑자기 에러가 나거나, 잠깐 끊길 수 있어
  • 재시도 기능을 만들어서, “3번까지 다시 해보고 그래도 안 되면 보류” 이렇게 만들 수 있어

🧩 8단계: 서버한테 예의 차리기 (Politeness)

  • 너무 빠르게 막 요청하면 웹사이트 주인이 싫어해
  • “1초에 한 번만 요청하자” 같은 규칙을 정하고 지켜줘야 해
  • 그리고 robots.txt라는 사이트 규칙 파일도 꼭 읽고 따라야 해

🧩 9단계: 같은 링크 또 안 가게 하기

  • 이미 갔던 주소는 다시 가지 말아야 해
  • 또는 내용이 똑같은 페이지면 스킵해야 함
  • 그래서 중복 제거 기능도 만들어야 해

🧩 10단계: 친구들 불러서 같이 하기 (확장)

  • 하나의 컴퓨터만 하지 말고, 여러 대가 나눠서 하면 훨씬 빠르지!
  • AWS 서버나 Docker 써서 여러 크롤러가 동시에 일하도록 만들 수 있어
  • 그리고 잘 돌아가는지 확인하려면 로그랑 그래프도 만들어야 해 (CloudWatch나 Grafana)

'미국유학 > Hello 시스템디자인스터디' 카테고리의 다른 글

4.22(화) Ad click aggregator  (0) 2025.04.23
25.04.18 금, Twitter  (0) 2025.04.19