내가 보려고 만든 크롤링 정리

1. 데이터 수집 개요

데이터 분석 또는 머신러닝 프로젝트를 수행하기 위해서는 데이터 수집(Data Collection) 과정이 필요하다.
데이터 수집은 다양한 경로를 통해 데이터를 확보하는 과정이며, 이후 데이터 전처리 및 분석의 기반이 된다.

대표적인 데이터 수집 방법은 다음과 같다.

  • 웹 크롤링 (Web Crawling)
  • 웹 스크래핑 (Web Scraping)
  • API 데이터 수집
  • 파일 기반 데이터 수집 (CSV, Excel 등)
  • 데이터베이스 데이터 수집

파이썬에서는 다음과 같은 라이브러리를 많이 사용한다.

  • requests
  • BeautifulSoup
  • selenium
  • pandas

2. requests 라이브러리

2.1 requests 개념

requestsHTTP 요청을 보내기 위한 파이썬 라이브러리이다.
웹 서버에 데이터를 요청하고 응답을 받아올 수 있다.

설치

pip install requests

사용

import requests

2.2 GET 요청

웹 서버에서 데이터를 가져올 때 사용한다.

import requests

url = "https://example.com"

response = requests.get(url)

print(response.status_code)

# 결과
# 200

주요 상태 코드

코드 의미
200 요청 성공
404 페이지 없음
500 서버 오류

응답 내용 확인

print(response.text)

# 결과
# HTML 문서 내용

ai가 추천하는 심화 예제

웹 페이지 HTML 일부 확인

import requests

url = "https://example.com"

response = requests.get(url)

print(response.text[:200])

# 결과
# HTML 문서의 앞부분 문자열

3. BeautifulSoup

3.1 BeautifulSoup 개념

BeautifulSoup은 HTML 또는 XML 문서를 파싱하여 원하는 데이터를 추출하는 라이브러리이다.

설치

pip install beautifulsoup4

사용

from bs4 import BeautifulSoup

3.2 HTML 파싱

from bs4 import BeautifulSoup

html = """
<html>
<body>
<h1>Hello</h1>
<p>Python Crawling</p>
</body>
</html>
"""

soup = BeautifulSoup(html, "html.parser")

print(soup)

# 결과
# HTML 구조 출력

3.3 태그 찾기

title = soup.find("h1")

print(title)

# 결과
# <h1>Hello</h1>

텍스트 추출

print(title.text)

# 결과
# Hello

ai가 추천하는 심화 예제

여러 태그 가져오기

items = soup.find_all("p")

for item in items:
    print(item.text)

# 결과
# Python Crawling

4. 웹 크롤링 기본 흐름

웹 크롤링의 기본 과정은 다음과 같다.

웹 요청 → HTML 수신 → HTML 파싱 → 데이터 추출

구현 과정

  1. requests로 웹페이지 요청
  2. BeautifulSoup으로 HTML 파싱
  3. 원하는 태그 추출
  4. 데이터 저장

크롤링 예제

import requests
from bs4 import BeautifulSoup

url = "https://example.com"

response = requests.get(url)

soup = BeautifulSoup(response.text, "html.parser")

title = soup.find("h1")

print(title.text)

# 결과
# 페이지 제목 출력

5. 데이터 수집 결과 저장

수집한 데이터는 보통 다음과 같은 형태로 저장한다.

  • CSV
  • Excel
  • Database

CSV 저장

import pandas as pd

data = {
    "name": ["A","B","C"],
    "score": [90,85,88]
}

df = pd.DataFrame(data)

df.to_csv("result.csv", index=False)

# 결과
# result.csv 파일 생성

ai가 추천하는 심화 예제

크롤링 결과 저장

titles = ["기사1","기사2","기사3"]

df = pd.DataFrame({
    "title": titles
})

df.to_csv("news.csv", index=False)

# 결과
# news.csv 파일 생성

6. 데이터 수집 시 주의사항

데이터 수집 시 다음 사항을 고려해야 한다.

1. robots.txt 확인

웹사이트의 크롤링 정책을 확인해야 한다.


2. 요청 속도 제한

짧은 시간에 많은 요청을 보내면 서버에 부담을 줄 수 있다.

import time

time.sleep(1)

3. 로그인 필요한 사이트

일부 사이트는 로그인 세션이 필요하다.

이 경우 다음이 필요할 수 있다.

  • session
  • cookies
  • selenium

7. 정리

데이터 수집은 데이터 분석 프로젝트의 시작 단계이다.

핵심 과정

웹 요청 → HTML 수신 → 파싱 → 데이터 추출 → 저장

주요 라이브러리

  • requests → 웹 요청
  • BeautifulSoup → HTML 파싱
  • pandas → 데이터 저장 및 처리

웹 크롤링은 데이터 분석, 뉴스 수집, 가격 모니터링, 시장 분석 등 다양한 분야에서 활용된다.