CSS 선택자를 활용한 데이터 추출
CSS 선택자는 여러 HTML 요소 중에서 특정 요소를 선택합니다.
기본 CSS 선택자
-
클래스 선택자
:.classname
형태로, 해당 클래스를 가진 모든 요소를 선택합니다. -
ID 선택자
:#idname
형태로, 특정 ID를 가진 요소를 선택합니다. -
요소 선택자
:tagname
형태로, 해당 태그를 가진 모든 요소를 선택합니다.
BeautifulSoup에서 CSS 선택자 사용
BeautifulSoup의 select()
메소드를 사용하여 CSS 선택자로 요소를 찾을 수 있습니다.
CSS 선택자로 요소 찾기
soup = BeautifulSoup(html_doc, 'html.parser')
# 클래스가 'my-class'인 모든 요소 찾기
class_elements = soup.select('.my-class')
# ID가 'my-id'인 요소 찾기
id_element = soup.select('#my-id')
# 모든 <a> 태그 찾기
a_elements = soup.select('a')
텍스트 데이터 추출
- CSS 선택자로 찾은 요소에
.text
속성을 사용하여 텍스트 내용을 추출합니다.
텍스트 데이터 추출
soup = BeautifulSoup(html_doc, 'html.parser')
# 클래스가 'my-class'인 요소의 텍스트 추출
for el in soup.select('.my-class'):
print(el.text)
# ID가 'my-id'인 요소의 텍스트 추출
print(soup.select_one('#my-id').text)
속성 값 추출
- 특정 속성(예:
href
,src
)을 가진 요소의 해당 속성 값을 추출할 수 있습니다.
속성 값 추출
# 모든 <a> 태그의 href 속성 값 추출
for a in soup.select('a'):
print(a.get('href'))
# 이미지 태그(<img>)의 src 속성 값 추출
for img in soup.select('img'):
print(img.get('src'))
사용 예시
사용 예시
html_doc = """
<div class="content">
<p class="info">This is a paragraph.</p>
<a href="http://example.com">Example Link</a>
</div>
"""
soup = BeautifulSoup(html_doc, 'html.parser')
# 클래스 'info'를 가진 <p> 태그의 텍스트 추출
info_text = soup.select_one('.info').text
print(info_text)
# 모든 링크(<a>)의 URL 추출
for link in soup.select('a'):
print(link.get('href'))
실습
화면 오른쪽 코드 실행
버튼을 누르고, 크롤링 결과를 확인하거나 코드를 수정해 보세요!
다음 내용이 궁금하다면?
코드프렌즈 PLUS 멤버십 가입 or 강의를 등록해 주세요!