먼저 Beautiful Soup은 HTML과 XML 파일에서 데이터를 추출하는 파이썬 라이브러리입니다. HTML과 XML은 웹 사이트의 콘텐츠를 저장하는 데 사용되는 매우 일반적인 형식입니다. Beautiful Soup은 이러한 형식에서 데이터를 추출하고, 분석하고, 변환하는 데 유용합니다.
Beautiful Soup은 파이썬의 표준 라이브러리로 포함되어 있지 않기 때문에, 우선 설치해야 합니다. 설치는 파이썬 패키지 관리자인 pip를 사용하여 간단히 할 수 있습니다. 다음 명령을 사용하여 설치합니다.
pip install beautifulsoup4
Beautiful Soup은 HTML 및 XML 문서의 모든 요소를 객체로 나타내며, 이러한 객체를 이용하여 원하는 정보를 추출할 수 있습니다. 이러한 객체는 BeautifulSoup 클래스의 인스턴스입니다.
예를 들어, 다음은 Beautiful Soup을 사용하여 HTML 파일에서 특정 태그의 텍스트를 추출하는 방법입니다.
from bs4 import BeautifulSoup
html_doc = """
<html>
<head>
<title>Beautiful Soup 예제</title>
</head>
<body>
<h1>제목</h1>
<p>첫 번째 문단입니다.</p>
<p class="test">두 번째 문단입니다.</p>
<a href="http://www.example.com">링크</a>
</body>
</html>
"""
soup = BeautifulSoup(html_doc, 'html.parser')
# 특정 태그 추출
title_tag = soup.title
print(title_tag)
# 태그 안의 텍스트 추출
title_text = title_tag.text
print(title_text)
# 특정 클래스 속성을 가진 태그 추출
p_tag = soup.find('p', class_='test')
print(p_tag)
# 링크 추출
a_tag = soup.a
print(a_tag)
link = a_tag['href']
print(link)
위 코드에서 **BeautifulSoup(html_doc, 'html.parser')**를 사용하여 BeautifulSoup 객체를 만들고, 이를 통해 HTML 문서의 모든 요소를 추출할 수 있습니다.
find 메소드를 사용하여 특정 태그나 클래스를 가진 요소를 추출할 수 있습니다. find 메소드는 첫 번째 일치하는 요소를 반환합니다. 다음과 같이 여러 개의 일치하는 요소를 추출하려면 find_all 메소드를 사용할 수 있습니다.
from bs4 import BeautifulSoup
html_doc = """
<html>
<head>
<title>Beautiful Soup 예제</title>
</head>
<body>
<h1>제목</h1>
<p>첫 번째 문단입니다.</p>
<p class="test">두 번째 문단입니다.</p>
<p class="test">세 번째 문단입니다.</p>
<a href="http://www.example.com">링크</a>
</body>
</html
soup = BeautifulSoup(html_doc, 'html.parser')
# 클래스가 test인 모든 p 태그 추출
p_tags = soup.find_all('p', class_='test')
for p_tag in p_tags:
print(p_tag)
# 모든 링크 추출
a_tags = soup.find_all('a')
for a_tag in a_tags:
print(a_tag)
link = a_tag['href']
print(link)
위 코드에서는 find_all 메소드를 사용하여 클래스가 test인 모든 p 태그와 모든 링크를 추출하고, 반복문을 사용하여 각 요소의 내용을 출력합니다.
또한, Beautiful Soup은 CSS 선택자를 사용하여 요소를 선택할 수도 있습니다. 예를 들어, select 메소드를 사용하여 클래스가 test인 모든 p 태그를 추출하는 방법은 다음과 같습니다.
from bs4 import BeautifulSoup
html_doc = """
<html>
<head>
<title>Beautiful Soup 예제</title>
</head>
<body>
<h1>제목</h1>
<p>첫 번째 문단입니다.</p>
<p class="test">두 번째 문단입니다.</p>
<p class="test">세 번째 문단입니다.</p>
<a href="http://www.example.com">링크</a>
</body>
</html>
"""
soup = BeautifulSoup(html_doc, 'html.parser')
# 클래스가 test인 모든 p 태그 추출
p_tags = soup.select('p.test')
for p_tag in p_tags:
print(p_tag)
위 코드에서는 select 메소드를 사용하여 CSS 선택자 p.test를 사용하여 클래스가 test인 모든 p 태그를 추출하고, 반복문을 사용하여 각 요소의 내용을 출력합니다.
Beautiful Soup은 HTML과 XML 파일에서 데이터를 추출하는 데 매우 유용한 라이브러리입니다. 이를 통해 웹 크롤링, 데이터 마이닝 등 다양한 분야에서 데이터를 추출하고 분석하는 데 사용할 수 있습니다.
'Python > Python 기초' 카테고리의 다른 글
파이썬에서 http 다운로드를 하는 방법 Urllib.request (0) | 2023.03.10 |
---|---|
파이썬에서 특정 폴더의 파일명을 추출하여 list.txt에 저장하기 (0) | 2023.03.10 |