Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- Antropic
- Anthropic
- Agents
- ChatGPT
- 코드리팩토링
- AI코딩
- 코딩에이전트
- 젯브레인즈
- Jetbrains
- vscode
- PHP리팩토링
- claudecode
- php
- 바이브코딩
- 클로드코드
- IntelliJ
- ChatGPTCodex
- 코덱스
- 인텔리제이
- Codex
- OpenAI
- 리팩토링
- claude code
- Claude
Archives
- Today
- Total
CHHB stroy
🥣 BeautifulSoup: 2025 최신 가이드 본문
파이썬으로 웹 스크레이핑 시작하기!
웹에서 정보를 한 번에 쏙! 뽑아오고 싶다면 바로 BeautifulSoup이 정답입니다 🥳
HTML이나 XML 문서를 파이썬 객체로 바꿔주고,
쉽고 직관적인 문법으로 필요한 데이터를 ‘쏙쏙’ 뽑아낼 수 있어요.
✨ BeautifulSoup이 뭔가요?
- 파이썬으로 HTML/XML 파싱 가능!
- 트리 구조를 내 마음대로 탐색/수정!
- 자동 인코딩 처리로 한글 걱정 NO!
- 여러 파서(html.parser, lxml, html5lib) 지원 🚀
- 오픈소스(MIT 라이센스)
🆕 최신 버전 & 설치 (2025)
- 🏷️ 최신 버전: 4.13.4 (2025년 4월 15일 릴리스)
- 🐍 지원 버전: Python 3.7+
- 📦 설치 방법:
pip install beautifulsoup4 # 또는 lxml/html5lib 추가 설치 pip install lxml html5lib - 🛠️ Debian/Ubuntu:
apt-get install python3-bs4 - 🌐 웹 요청엔 보통
requests도 같이 써요!pip install requests
🚀 기본 사용법: 10분 만에 마스터
from bs4 import BeautifulSoup
html_doc = """
<html><head><title>샘플 페이지</title></head>
<body>
<p class="title"><b>샘플 이야기</b></p>
<p class="story">옛날 옛적 세 자매가 있었습니다;
<a href="http://example.com/elsie" class="sister" id="link1">Elsie</a>,
<a href="http://example.com/lacie" class="sister" id="link2">Lacie</a>와
<a href="http://example.com/tillie" class="sister" id="link3">Tillie</a>
가 우물 바닥에 살았습니다.</p>
<p class="story">...</p>
</body>
</html>
"""
soup = BeautifulSoup(html_doc, 'html.parser')
print(soup.prettify()) # 예쁘게 출력!
print(soup.title.string) # '샘플 페이지'
print(soup.p['class']) # ['title']
for link in soup.find_all('a'): # 링크 모두 뽑기
print(link.get('href'))
print(soup.get_text()) # 전체 텍스트 한 번에!
💡 실전팁:
soup.title처럼 ‘점’(dot) 접근으로 트리 탐색!find_all('a'): 모든<a>태그 리스트로 한 번에!get_text(): 태그 싹 빼고 텍스트만 추출!
🔎 find()와 find_all()로 원하는 데이터 뽑기
| 메서드 | 설명 | 결과 타입 |
|---|---|---|
find() |
첫 번째로 만나는 요소 반환 | 단일 요소 |
find_all() |
조건에 맞는 모든 요소 리스트 반환 | 리스트 |
import requests
from bs4 import BeautifulSoup
response = requests.get("https://quotes.toscrape.com")
soup = BeautifulSoup(response.text, "html.parser")
print(soup.find("div", class_="quote").text.strip()) # class로 찾기
print(soup.find("ul", id="menu").get_text(strip=True)) # id로 찾기
print(soup.find("a", string="Login")["href"]) # 텍스트로 찾기
quotes = soup.find_all("div", class_="quote") # 모두 찾기
for q in quotes:
print(q.get_text(separator=" ", strip=True))
🔥 꿀팁
class_="..."처럼class뒤에 언더바 필수!- 여러 조건 조합도
attrs={...}로 가능!
🧩 파서 선택 가이드
| 파서 | 특징 | 설치방법 |
|---|---|---|
| html.parser | 기본 내장, 빠름, 간단 | 내장 |
| lxml | C로 빠름, HTML/XML 모두 지원 | pip install lxml |
| html5lib | 브라우저와 유사, 매우 관대(느림) | pip install html5lib |
😎 저는 보통
lxml+html.parser조합으로 실전 사용!
☑️ 올바른 스크레이핑 습관
- 🤖 robots.txt 확인: 허용범위 체크!
- ⏲️ 요청 간 딜레이:
time.sleep()으로 서버 배려! - 🕹️ 동적 사이트: JS 많은 사이트는 Selenium/Playwright도 고려!
- ⚠️ 예외 처리: 네트워크/파싱 오류 try-except로 방어!
- 📜 법적 이슈: 이용약관/저작권 준수는 필수!
🎁 한 줄 요약 & 느낀 점
🥣 BeautifulSoup은 웹 데이터 파싱의 ‘맛집’!
- 초보도 쉽게 배우고, 실전에서 바로 써먹을 수 있다!
- 본문 예제와 실전 팁 꼭 따라 해보세요.
- 시행착오? 저도
class_빼먹고 몇 번 에러났답니다 😅
추가 참고자료:
😊 질문·피드백·경험담은 댓글로 언제든 환영합니다!
'Python' 카테고리의 다른 글
| Django 프레임워크 – 파이썬 웹 개발의 강력한 무기 (1) | 2025.08.10 |
|---|---|
| 🌐 Python Requests 완벽 가이드 (3) | 2025.08.07 |
| 🐼 Pandas 라이브러리 자주 쓰는 함수 총정리 (3) | 2025.08.03 |
| 📌 Windows 11에서 WSL2, Docker, Python, PyCharm 설치 및 연동 가이드 (2) | 2025.08.02 |
| Python 기초 문법 완벽 정리 (0) | 2025.04.20 |
