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)
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!