[python] 파이썬 BeautifulSoup으로 웹사이트 구조 분석하기

웹 스크레이핑을 위해 웹사이트의 구조를 분석하는 것은 매우 중요합니다. 파이썬의 BeautifulSoup 라이브러리를 사용하면 쉽게 웹사이트의 HTML 구조를 파싱하고 원하는 정보를 추출할 수 있습니다.

BeautifulSoup 라이브러리 설치

먼저 BeautifulSoup 라이브러리를 설치해야 합니다. 파이썬 패키지 관리자인 pip를 사용하여 간단하게 설치할 수 있습니다.

pip install beautifulsoup4

HTML 구조 파싱하기

다음으로, 파이썬에서 BeautifulSoup 라이브러리를 import 하고 웹사이트의 HTML을 파싱합니다. 웹페이지의 HTML 구조는 requests 라이브러리를 사용하여 가져올 수 있습니다.

import requests
from bs4 import BeautifulSoup

# 웹사이트의 HTML을 가져옴
response = requests.get('https://www.example.com')
html = response.text

# HTML을 파싱
soup = BeautifulSoup(html, 'html.parser')

# 파싱된 HTML 구조를 출력
print(soup.prettify())

위 코드에서 https://www.example.com의 웹사이트 HTML을 가져와 soup 객체에 담았습니다. soup.prettify()는 예쁘게 들여쓰기된 HTML을 출력하는 메서드입니다.

필요한 정보 추출하기

파싱된 HTML에서 필요한 정보를 추출할 수 있습니다. BeautifulSoup은 이를 위해 태그를 검색하고 필요한 데이터를 가져오는 다양한 메서드를 제공합니다.

# 태그 이름으로 검색
h1_tag = soup.find('h1')

# 클래스 이름으로 검색
div_tags = soup.find_all('div', class_='container')

# CSS 선택자로 검색
a_tags = soup.select('a[href^="https://"]')

# 텍스트 추출
print(h1_tag.text)
for div_tag in div_tags:
    print(div_tag.text)
for a_tag in a_tags:
    print(a_tag.text, a_tag['href'])

위 코드에서는 find() 메서드로 ‘h1’ 태그를 찾아 해당 태그의 텍스트를 출력하고, find_all() 메서드로 ‘div’ 태그 중 클래스가 ‘container’인 모든 태그를 찾아 텍스트를 출력합니다. select() 메서드는 CSS 선택자를 사용하여 원하는 태그를 검색하는 기능을 제공합니다. 마지막으로, 추출한 태그의 속성 값에 접근하기 위해 ['속성이름']을 사용할 수 있습니다.

결론

파이썬의 BeautifulSoup 라이브러리를 사용하면 손쉽게 웹사이트의 구조를 분석하고 필요한 정보를 추출할 수 있습니다. 이를 통해 웹 스크레이핑을 효과적으로 할 수 있으며, 데이터 분석이나 자동화 작업에 유용하게 활용할 수 있습니다.


참고 문서: BeautifulSoup 공식 문서