PHpullh
학습 라이브러리/Python/웹 스크래핑 (BeautifulSoup)

PYTHON · 파일/IO

웹 스크래핑 (BeautifulSoup)

HTML 파싱과 데이터 추출의 기본 패턴입니다. BeautifulSoup의 주요 셀렉터를 다룹니다.

파일/IO중급BeautifulSoup스크래핑HTML파싱

핵심 설명

HTML 파싱과 데이터 추출의 기본 패턴입니다. BeautifulSoup의 주요 셀렉터를 다룹니다.

Python code

# BeautifulSoup 패턴 시뮬레이션
html = """
<html>
<body>
  <h1 class="title">Python 뉴스</h1>
  <ul id="articles">
    <li class="article">
      <a href="/post/1">첫 번째 글</a>
      <span class="date">2024-01-15</span>
    </li>
    <li class="article">
      <a href="/post/2">두 번째 글</a>
      <span class="date">2024-01-16</span>
    </li>
  </ul>
</body>
</html>
"""

# 간단한 파서 (실제는 BeautifulSoup 사용)
import re

# 태그 내용 추출
titles = re.findall(r"<a[^>]*>(.*?)</a>", html)
dates = re.findall(r'class="date">(.*?)</span>', html)
links = re.findall(r'href="([^"]*)"', html)

for title, date, link in zip(titles, dates, links):
    print(f"  [{date}] {title} ({link})")

# BeautifulSoup 실사용 패턴
# from bs4 import BeautifulSoup
# soup = BeautifulSoup(html, "html.parser")
# for article in soup.select("li.article"):
#     title = article.select_one("a").text
#     link = article.select_one("a")["href"]
#     date = article.select_one(".date").text
#     print(f"[{date}] {title} ({link})")

print("웹 스크래핑 패턴 시연 완료")

학습 팁

CSS 셀렉터(soup.select())가 find_all()보다 직관적입니다.

주의할 점

정규식으로 HTML을 파싱하면 중첩 태그, 속성 순서 등에서 오류가 발생합니다. 반드시 전용 파서를 사용하세요.

자주 묻는 질문

웹 스크래핑 (BeautifulSoup)란 무엇인가요?

HTML 파싱과 데이터 추출의 기본 패턴입니다. BeautifulSoup 의 주요 셀렉터를 다룹니다.

웹 스크래핑 (BeautifulSoup) 학습 시 주의할 점은 무엇인가요?

정규식으로 HTML을 파싱하면 중첩 태그, 속성 순서 등에서 오류가 발생합니다. 반드시 전용 파서를 사용하세요.