웹 크롤링 기초
이번 시간에는 파이썬으로 웹사이트의 데이터를 가져오는 프로그램을 만들어 보겠습니다.
웹 크롤링이란 인터넷 사이트에 있는 글, 제목, 링크 같은 정보를 파이썬으로 자동으로 가져오는 것을 말합니다.
예를 들어 뉴스 제목, 블로그 제목, 상품 이름 같은 정보를 사람이 하나씩 복사하지 않고 프로그램이 대신 가져오게 만들 수 있습니다.
1. 웹 크롤링이란?
웹 크롤링은 쉽게 말해
파이썬이 웹사이트에 들어가서 필요한 정보를 가져오는 것
입니다.
사람이 웹사이트에 접속해서 글을 읽는 것처럼, 파이썬도 웹사이트 주소에 접속해서 HTML 코드를 읽을 수 있습니다.
2. 먼저 설치해야 하는 라이브러리
이번 예제에서는 두 가지 라이브러리를 사용합니다.
pip install requests beautifulsoup4
라이브러리 설명
라이브러리역할
| requests | 웹사이트에 접속해서 HTML 가져오기 |
| beautifulsoup4 | HTML 안에서 원하는 데이터 찾기 |
3. 웹사이트 제목 가져오기 프로그램
import requests
from bs4 import BeautifulSoup
# 데이터를 가져올 웹사이트 주소
url = "https://example.com"
# 웹사이트에 접속하기
response = requests.get(url)
# 한글 깨짐 방지
response.encoding = response.apparent_encoding
# HTML 코드 분석하기
soup = BeautifulSoup(response.text, "html.parser")
# 웹사이트 제목 가져오기
title = soup.title.text
# 결과 출력
print("웹사이트 제목:", title)
4. 실행 결과 예시
웹사이트 제목: Example Domain
5. 소스 코드 설명
1) requests 불러오기
import requests
requests는 파이썬이 웹사이트에 접속할 수 있게 도와주는 도구입니다.
사람이 크롬이나 엣지로 사이트에 들어가는 것처럼, 파이썬은 requests를 사용해서 사이트에 들어갑니다.
2) BeautifulSoup 불러오기
from bs4 import BeautifulSoup
BeautifulSoup은 HTML 코드 안에서 필요한 내용을 쉽게 찾게 해주는 도구입니다.
HTML은 웹사이트를 만드는 코드입니다.
3) 웹사이트 주소 저장하기
url = "https://example.com"
데이터를 가져올 웹사이트 주소를 변수에 저장합니다.
여기서는 연습용 사이트인 example.com을 사용했습니다.
4) 웹사이트 접속하기
response = requests.get(url)
requests.get()은 해당 주소의 웹사이트에 접속해서 내용을 가져옵니다.
가져온 결과는 response 변수에 저장됩니다.
5) 한글 깨짐 방지하기
response.encoding = response.apparent_encoding
웹사이트에 한글이 있을 때 글자가 깨질 수 있습니다.
이 코드는 글자가 깨지지 않도록 인코딩을 맞춰줍니다.
6) HTML 분석하기
soup = BeautifulSoup(response.text, "html.parser")
웹사이트에서 가져온 HTML 코드를 BeautifulSoup으로 분석합니다.
이렇게 하면 제목, 링크, 문장 등을 쉽게 찾을 수 있습니다.
7) 제목 가져오기
title = soup.title.text
soup.title은 HTML에서 제목 부분을 찾습니다.
.text는 태그를 제외하고 글자만 가져옵니다.
8) 결과 출력하기
print("웹사이트 제목:", title)
가져온 웹사이트 제목을 화면에 출력합니다.
6. 여러 개의 링크 가져오기
이번에는 웹사이트 안에 있는 링크를 가져와 보겠습니다.
import requests
from bs4 import BeautifulSoup
url = "https://example.com"
response = requests.get(url)
response.encoding = response.apparent_encoding
soup = BeautifulSoup(response.text, "html.parser")
# 모든 a 태그 찾기
links = soup.find_all("a")
print("웹사이트 링크 목록")
for link in links:
text = link.text
href = link.get("href")
print("글자:", text)
print("주소:", href)
print("-" * 30)
7. 실행 결과 예시
웹사이트 링크 목록
글자: Learn more
주소: https://iana.org/domains/example
------------------------------
8. 링크 가져오기 코드 설명
a 태그란?
링크
웹사이트에서 링크는 보통 a 태그로 만들어집니다.
그래서 BeautifulSoup으로 a 태그를 찾으면 웹사이트 안의 링크를 가져올 수 있습니다.
모든 링크 찾기
links = soup.find_all("a")
find_all("a")는 HTML 안에 있는 모든 a 태그를 찾습니다.
링크 글자 가져오기
text = link.text
링크에 표시된 글자를 가져옵니다.
링크 주소 가져오기
href = link.get("href")
href는 실제 이동하는 주소입니다.
9. 네이버 뉴스처럼 제목 목록 가져오기 예제
실제 사이트마다 HTML 구조가 다르기 때문에 가져올 태그 이름이나 클래스 이름이 다를 수 있습니다.
아래 코드는 연습용 구조입니다.
import requests
from bs4 import BeautifulSoup
url = "https://example.com"
headers = {
"User-Agent": "Mozilla/5.0"
}
response = requests.get(url, headers=headers)
response.encoding = response.apparent_encoding
soup = BeautifulSoup(response.text, "html.parser")
titles = soup.find_all("h1")
print("제목 목록")
for title in titles:
print(title.text.strip())
10. User-Agent란?
headers = {
"User-Agent": "Mozilla/5.0"
}
일부 웹사이트는 프로그램이 접속하면 막을 수 있습니다.
User-Agent는 파이썬이 웹사이트에 접속할 때 보내는 방문자 정보입니다.
쉽게 말하면
“저는 웹브라우저처럼 접속합니다”
라고 알려주는 역할을 합니다.
11. 크롤링할 때 꼭 지켜야 할 점
웹 크롤링은 편리하지만 주의해야 합니다.
꼭 지켜야 할 규칙
- 너무 자주 접속하지 않기
- 사이트 이용 약관 확인하기
- 개인정보 수집하지 않기
- 무단으로 데이터를 가져가서 상업적으로 사용하지 않기
- 서버에 부담을 주지 않기
크롤링은 공부용으로 천천히 연습하는 것이 좋습니다.
12. 완성 코드
아래 코드는 웹사이트 제목과 링크 목록을 함께 가져오는 완성 코드입니다.
import requests
from bs4 import BeautifulSoup
# 웹사이트 주소
url = "https://example.com"
# 브라우저처럼 접속하기 위한 정보
headers = {
"User-Agent": "Mozilla/5.0"
}
try:
# 웹사이트 접속
response = requests.get(url, headers=headers)
# 접속 성공 확인
if response.status_code == 200:
response.encoding = response.apparent_encoding
# HTML 분석
soup = BeautifulSoup(response.text, "html.parser")
# 웹사이트 제목 출력
if soup.title:
print("웹사이트 제목:", soup.title.text)
else:
print("웹사이트 제목을 찾을 수 없습니다.")
print("\n링크 목록")
# 모든 링크 찾기
links = soup.find_all("a")
for link in links:
text = link.text.strip()
href = link.get("href")
print("글자:", text)
print("주소:", href)
print("-" * 30)
else:
print("웹사이트 접속 실패")
print("상태 코드:", response.status_code)
except Exception as e:
print("오류가 발생했습니다.")
print("오류 내용:", e)
13. 전체 코드 쉽게 이해하기
이 프로그램은 다음 순서로 움직입니다.
- 웹사이트 주소를 정합니다.
- 파이썬이 그 웹사이트에 접속합니다.
- HTML 코드를 가져옵니다.
- BeautifulSoup으로 HTML을 읽기 쉽게 바꿉니다.
- 웹사이트 제목을 찾습니다.
- 링크들을 찾습니다.
- 결과를 화면에 출력합니다.
14. 웹 크롤링 구조도
👦 사용자
웹사이트 주소 입력
↓
🐍 Python 프로그램
requests로 웹사이트 접속
↓
📄 HTML 코드 가져오기
↓
🔍 BeautifulSoup으로 분석
↓
📊 제목, 링크, 글자 출력
15. 마무리
이번 Chapter 29에서는 파이썬으로 웹사이트 데이터를 가져오는 방법을 배웠습니다.
처음에는 웹사이트 제목이나 링크처럼 간단한 정보부터 가져오는 것이 좋습니다.
웹 크롤링을 잘 활용하면 뉴스 제목 모으기, 상품 정보 확인하기, 블로그 글 목록 가져오기 같은 자동화 프로그램도 만들 수 있습니다.
다만 크롤링은 항상 사이트 규칙을 지키면서 조심해서 사용해야 합니다.
웹 크롤링 기초

'강의 > Python 기초' 카테고리의 다른 글
| 📚 파이썬으로 만드는 30가지 실전 프로젝트 (1) | 2026.06.15 |
|---|---|
| Chapter 30. AI 챗봇 만들기 (0) | 2026.06.15 |
| Chapter 28. 이메일 자동 발송기 (0) | 2026.06.15 |
| Chapter 27. PDF 자동 생성기 - PDF 만들기 (0) | 2026.06.15 |
| Chapter 26. 엑셀 자동 보고서 생성기 만들기 (0) | 2026.06.15 |