본문으로 건너뛰기
실습하기

BeautifulSoup 주요 메서드와 활용법

이번 수업에서는 BeautifulSoup의 주요 메서드와 그 활용 방법을 간단한 예제와 함께 알아보겠습니다.


특정 요소를 찾는 find

웹 페이지에서 특정 요소를 찾고 싶다면, find() 메서드를 사용합니다.

이 메서드는 조건에 맞는 첫 번째 요소를 반환합니다.

find 메서드 활용 예시
from bs4 import BeautifulSoup

html_doc = """
<html><body>
<h1>안녕하세요</h1>
<p>문단 1</p>
<p>문단 2</p>
</body></html>
"""

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

# h1 태그 찾기
h1_tag = soup.find('h1')

# 출력: 안녕하세요
print(h1_tag.text)

위 예제에서는 h1 태그를 찾아 그 내용을 출력합니다.

find()는 항상 첫 번째로 일치하는 요소만 반환하므로, 여러 요소가 있다면 첫 번째 요소만 반환됩니다.


여러 요소를 한 번에 찾는 find_all

만약 조건에 맞는 모든 요소를 찾고 싶다면 find_all() 메서드를 사용합니다.

이 메서드는 리스트 형태로 결과를 반환해, 여러 요소를 한 번에 처리합니다.

find_all 메서드 활용 예시
from bs4 import BeautifulSoup

html_doc = """
<html><body>
<p>문단 1</p>
<p>문단 2</p>
<p>문단 3</p>
</body></html>
"""

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

# 모든 p 태그 찾기
p_tags = soup.find_all('p')

# 모든 p 태그 출력
for p in p_tags:
# 출력: 문단 1, 문단 2, 문단 3
print(p.text)

이 코드는 html_doc 변수에 담긴 문자열의 모든 p 태그를 찾아 출력합니다.

p_tags 변수에 p 태그의 값들이 리스트의 형태로 ['문단 1', '문단 2', '문단 3']로 저장되어 있습니다.

이렇게 find_all()은 원하는 요소들을 한 번에 찾을 때 유용합니다.


CSS 선택자로 찾는 select

CSS 선택자를 활용해 특정 요소를 선택할 때는 select()를 사용합니다.

select 메서드 활용 예시
from bs4 import BeautifulSoup

html_doc = """
<html><body>
<p>문단 1</p>
<div class="content">
<p>문단 2</p>
<p>문단 3</p>
</div>
</body></html>
"""

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

# .content 클래스 안에 있는 모든 p 태그 찾기
content_p_tags = soup.select('.content p')
for p in content_p_tags:
# 출력: 문단 2, 문단 3
print(p.text)

이 코드에서는 .content 클래스 안에 있는 p 태그들을 모두 선택해 출력합니다.


첫 번째 요소만 선택하는 select_one()

select_one() 메서드는 select()와 유사하지만, 조건에 맞는 첫 번째 요소만 반환합니다.

select_one() 메서드 활용 예시
from bs4 import BeautifulSoup

html_doc = """
<html><body>
<div class="content">
<p>문단 1</p>
<p>문단 2</p>
</div>
</body></html>
"""

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

# .content 클래스 안의 첫 번째 p 태그 찾기
first_p_tag = soup.select_one('.content p')

# 출력: 문단 1
print(first_p_tag.text)

select_one()은 조건에 맞는 첫 번째 요소만 필요할 때 간편하게 사용할 수 있습니다.

다음 내용이 궁금하다면?

코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!