[python] 파이썬 BeautifulSoup과 웹 스크래핑

웹 스크래핑은 인터넷 상의 웹 페이지에서 데이터를 추출하는 기술입니다. 파이썬은 웹 스크래핑을 수행하는데 매우 효과적인 도구들을 제공하고 있습니다. 이 중에서도 BeautifulSoup은 웹 스크래핑을 쉽게 수행할 수 있도록 도와주는 라이브러리입니다.

BeautifulSoup이란?

BeautifulSoup은 HTML과 XML 문서를 파싱하고 검색, 수정하는데 사용되는 파이썬 라이브러리입니다. 이 라이브러리는 파이썬의 내장 라이브러리인 urllib 또는 requests와 함께 사용하여 웹 페이지의 내용을 읽어와서 파싱할 수 있습니다.

BeautifulSoup 설치하기

BeautifulSoup을 사용하기 위해서는 먼저 해당 라이브러리를 설치해야 합니다. 아래와 같이 pip 명령을 사용하여 설치할 수 있습니다.

pip install beautifulsoup4

BeautifulSoup 사용하기

BeautifulSoup을 사용하는 가장 기본적인 예제를 살펴보겠습니다.

from bs4 import BeautifulSoup

html = "<html><body><h1>Hello, BeautifulSoup!</h1></body></html>"
soup = BeautifulSoup(html, 'html.parser')
print(soup.h1.text)

위의 코드는 문자열로 구성된 HTML 코드를 파싱하여 h1 태그의 내용을 출력하는 간단한 예제입니다. BeautifulSoup 객체를 생성할 때는 파싱하고자 하는 HTML 문자열과 파싱 방법을 지정합니다. 이후에는 원하는 태그를 탐색하여 데이터를 추출할 수 있습니다.

웹 페이지 스크래핑 예제

이번에는 실제 웹 페이지에서 데이터를 추출하는 예제를 살펴보겠습니다. 아래와 같은 HTML 코드를 가진 웹 페이지에서 특정 내용을 추출해보겠습니다.

<html>
<head><title>웹 스크래핑 예제</title></head>
<body>
  <h1>파이썬 BeautifulSoup으로 웹 스크래핑하기</h1>
  <ul>
    <li>웹 스크래핑</li>
    <li>데이터 추출</li>
    <li>HTML 파싱</li>
  </ul>
</body>
</html>

위의 HTML 코드에서 <h1> 태그의 내용과 <ul> 태그로 구성된 목록의 내용을 추출해보겠습니다.

from bs4 import BeautifulSoup

html = """
<html>
<head><title>웹 스크래핑 예제</title></head>
<body>
  <h1>파이썬 BeautifulSoup으로 웹 스크래핑하기</h1>
  <ul>
    <li>웹 스크래핑</li>
    <li>데이터 추출</li>
    <li>HTML 파싱</li>
  </ul>
</body>
</html>
"""

soup = BeautifulSoup(html, 'html.parser')
title = soup.h1.text
items = soup.ul.find_all('li')

print(f"Title: {title}")
print("Items:")
for item in items:
    print(item.text)

위의 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

Title: 파이썬 BeautifulSoup으로 웹 스크래핑하기
Items:
웹 스크래핑
데이터 추출
HTML 파싱

위의 예제에서는 find_all() 메소드를 사용하여 특정 태그를 모두 찾아와서 반복문을 통해 내용을 출력하였습니다.

결론

파이썬 BeautifulSoup은 웹 스크래핑을 쉽게 수행할 수 있도록 도와주는 강력한 도구입니다. HTML이나 XML 문서를 파싱하고 원하는 데이터를 추출해낼 수 있습니다. 웹 스크래핑을 위한 다양한 기능들을 제공하면서도 사용법이 간단하여 많은 개발자들이 사용하고 있습니다.