본문 바로가기
파이썬

파이썬 BeautifulSoup 라이브러리 이해하기

by python pro 2023. 1. 30.
반응형

"Python BeautifulSoup 패키지"는 Python에서 HTML과 XML 파일을 파싱하는데 사용되는 패키지입니다. 이 패키지를 이용하면 편리하게 HTML/XML 파일에서 원하는 정보를 추출할 수 있습니다.

 

아래는 BeautifulSoup 패키지를 이용해 HTML 파일을 파싱하는 예제 코드입니다.

from bs4 import BeautifulSoup

html = """
<html>
<body>
    <h1>Hello, World!</h1>
    <p>This is a test.</p>
</body>
</html>
"""

soup = BeautifulSoup(html, 'html.parser')

# h1 태그를 찾아서 텍스트를 출력
h1 = soup.find('h1')
print(h1.text) # "Hello, World!"

# p 태그를 찾아서 텍스트를 출력
p = soup.find('p')
print(p.text) # "This is a test."

BeautifulSoup 패키지는 find()와 find_all() 함수를 제공합니다. find() 함수는 첫번째로 만난 태그를, find_all() 함수는 모든 태그를 반환합니다.

 

find()와 find_all() 함수를 이용하면서 태그를 검색할 때도 여러가지 조건을 설정할 수 있습니다. 아래는 클래스가 "test"인 태그를 찾는 예제 코드입니다.

from bs4 import BeautifulSoup

html = """
<html>
<body>
    <div class="test">Hello, World!</div>
    <p class="test">This is a test.</p>
</body>
</html>
"""

soup = BeautifulSoup(html, 'html.parser')

# 클래스가 "test"인 태그를 찾아서 텍스트를 출력
tags = soup.find_all(class_='test')
for tag in tags:
    print(tag.text)

위 코드는 기본적인 사용법을 설명하였지만, 실제 업무에서는 다양한 요구사항에 맞게 코드를 수정해야 할 수 있습니다.

 

BeautifulSoup를 이용하여 parsing을 할 때는 주의해야 할 점도 있습니다.

  • 첫번째로, 정확한 태그를 찾을 수 있도록 정확한 파서를 선택해야 합니다.
  • 두번째로, 태그를 찾을 때 태그명이나 속성명이 대소문자를 구분하는 페이지라면 대소문자를 구분하여 검색해야 합니다.

아래는 잘못된 예제 코드입니다.

# 잘못된 예제
soup.find('div') 
# <div> 태그를 찾아야 하는데 <Div> 태그를 찾아버림

soup.find_all(class_='Test') 
# <div class="test"> 와 <p class="test">를 찾아야 하는데 
# <div class="Test"> 와 <p class="Test">를 찾아버림

이와 같은 예외 상황을 방지하기 위해서는 정확한 태그명, 속성명, 파서를 사용하는 것이 중요합니다.

반응형

댓글