본문으로 건너뛰기

CSS 선택자를 활용한 데이터 추출

CSS 선택자를 활용한 데이터 추출

CSS 선택자는 여러 HTML 요소 중에서 특정 요소를 선택합니다.


기본 CSS 선택자

  1. 클래스 선택자: .classname 형태로, 해당 클래스를 가진 모든 요소를 선택합니다.

  2. ID 선택자: #idname 형태로, 특정 ID를 가진 요소를 선택합니다.

  3. 요소 선택자: 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'))

실습

화면 오른쪽 코드 실행 버튼을 누르고, 크롤링 결과를 확인하거나 코드를 수정해 보세요!