Files
python-examples/doc/20_01_html_parser.md
2025-02-10 04:31:03 +09:00

3.2 KiB

HTML 응답 파싱

  • Beautiful Soup

    • HTML 파싱: requests로 가져온 HTML 콘텐츠를 파싱하여 특정 요소를 추출하는 데 사용됩니다.
    • 예시: 웹 페이지에서 특정 태그의 내용을 추출하거나, CSS 선택자를 이용하여 원하는 데이터를 찾아낼 수 있습니다.
  • lxml

    • XML/HTML 파싱: Beautiful Soup보다 빠르고 강력한 성능을 제공합니다. XPath를 사용하여 복잡한 구조의 문서를 효율적으로 파싱할 수 있습니다.
    • 예시: XML 형식의 데이터를 처리하거나, 대규모 HTML 문서를 빠르게 파싱할 때 사용합니다.
  • pandas

    • 데이터 분석: requests로 가져온 JSON 또는 CSV 형식의 데이터를 pandas DataFrame으로 변환하여 데이터 분석을 수행할 수 있습니다.
    • 예시: 웹 API에서 가져온 데이터를 분석하고 시각화하는 데 사용합니다.
  • scrapy

    • 웹 크롤링: 웹 사이트를 크롤링하여 데이터를 추출하고 저장하는 데 특화된 프레임워크입니다.
    • 예시: 대규모 웹 사이트를 크롤링하여 데이터를 수집하고 분석할 때 사용합니다.
  • Parsel

    • CSS 선택자 기반의 HTML/XML 파싱 라이브러리: Beautiful Soup과 유사하지만 더욱 강력한 기능을 제공합니다.

Beautiful Soup

Beautiful Soup은 파이썬에서 HTML 및 XML 문서를 파싱하고 처리하기 위한 파서 라이브러리입니다. 웹 크롤링, 데이터 추출 등 다양한 작업에 활용되며, 복잡한 웹 페이지 구조를 쉽게 분석하고 원하는 정보를 추출할 수 있도록 도와줍니다.

pip install beautifulsoup4
from bs4 import BeautifulSoup
import requests

# 웹 페이지 가져오기
response = requests.get("https://www.example.com")
html = response.text

# BeautifulSoup 객체 생성
soup = BeautifulSoup(html, 'html.parser')

# 특정 태그 찾기
title = soup.title
print(title.string)

# 모든 링크 찾기
links = soup.find_all('a')
for link in links:
    print(link.get('href'))

주요 메서드

  • select(): CSS 선택자를 사용하여 요소를 찾아 리스트로 반환합니다.
  • select_one(): CSS 선택자를 사용하여 요소를 찾습니다.
  • find(): 특정 태그를 하나 찾습니다.
  • find_all(): 특정 태그를 모두 찾아 리스트로 반환합니다.
  • get_text(): 태그 내부의 텍스트를 추출합니다.
  • get(): 태그의 속성 값을 가져옵니다.
# 모든 'a' 태그 찾기
links = soup.find_all('a')

# id가 'my-title'인 태그 찾기
title = soup.find(id='my-title')

# class가 'product'인 모든 div 태그 찾기
products = soup.find_all('div', class_='product')

  • CSS 선택자 활용: CSS 선택자를 이용하면 복잡한 구조의 HTML 문서에서도 원하는 요소를 정확하게 찾을 수 있습니다.
  • 파서 선택: html.parser 외에도 lxml 등 다른 파서를 사용할 수 있습니다. lxml은 성능이 더 빠르지만 설치가 필요합니다.
  • 예외 처리: 네트워크 오류나 HTML 구조 변경 등 예상치 못한 상황에 대비하여 예외 처리를 해야 합니다.
  • XPath 사용: XPath를 사용하여 더욱 복잡한 XPath 표현식으로 요소를 선택할 수 있습니다.