[파이썬] Beautiful Soup 기본 웹 스크레이핑 시작

Beautiful Soup은 파이썬 기반의 웹 스크레이핑 라이브러리로, HTML과 XML 문서를 파싱하고 원하는 데이터를 추출하는 데 사용됩니다. 이 블로그 포스트에서는 Beautiful Soup의 기본 사용법을 소개하고, 예제 코드를 통해 실제로 데이터를 가져오는 방법을 알아보겠습니다.

Beautiful Soup 설치

Beautiful Soup을 사용하기 위해서는 먼저 설치해야 합니다. 다음 명령을 사용하여 pip를 통해 Beautiful Soup을 설치할 수 있습니다.

pip install beautifulsoup4

HTML 문서 파싱

Beautiful Soup를 사용하려면 먼저 파싱할 HTML 문서가 필요합니다. 파싱할 문서를 지정하고, Beautiful Soup 객체를 생성해야 합니다.

from bs4 import BeautifulSoup

# HTML 문서를 파싱한다
html_doc = "<html><head><title>웹 스크레이핑 예제</title></head><body><h1>환영합니다</h1><p>이 문서는 Beautiful Soup 기본 사용법을 소개합니다.</p></body></html>"

# BeautifulSoup 객체를 생성한다
soup = BeautifulSoup(html_doc, 'html.parser')

HTML 태그 선택

파싱된 HTML 문서에서 원하는 데이터를 선택하기 위해 HTML 태그를 사용할 수 있습니다. Beautiful Soup은 다양한 방법으로 태그를 선택하는 기능을 제공합니다.

# h1 태그를 선택한다
header = soup.h1
print(header.text)

# p 태그를 선택한다
paragraph = soup.p
print(paragraph.text)

# 모든 h1 태그를 선택한다
headers = soup.find_all('h1')
for header in headers:
    print(header.text)

CSS 선택자 활용

Beautiful Soup은 CSS 선택자를 사용하여 원하는 요소를 선택할 수도 있습니다. CSS 선택자를 사용하려면 lxml 또는 html5lib 파서를 설치해야 합니다.

# lxml 파서를 사용하여 CSS 선택자로 요소를 선택한다
soup = BeautifulSoup(html_doc, 'lxml')
paragraph = soup.select_one('p')
print(paragraph.text)

# 여러 개의 요소를 동시에 선택한다
headers = soup.select('h1, h2, h3')
for header in headers:
    print(header.text)

데이터 추출

Beautiful Soup을 사용하여 선택된 요소에서 데이터를 추출할 수 있습니다. 다음은 예제 코드입니다.

# 마크업에서 텍스트 노드를 가져온다
print(header.string)

# 태그의 속성을 가져온다
print(header['class'])

# 특정 속성 값으로 요소를 필터링한다
links = soup.find_all('a', attrs={'class': 'red'})
for link in links:
    print(link['href'])

# 부모 요소에 접근한다
print(paragraph.parent.name)

이제 Beautiful Soup의 기본 사용법을 알게 되었습니다. 웹 스크레이핑을 할 때는 사이트의 이용 약관과 규정을 준수해야 합니다. 합법적인 방법으로 데이터를 추출하고, 특히 저작권과 개인정보 보호에 유의하도록 합시다. Happy scraping!