[BeautifulSoup] find_all() 함수

서대철·2023년 8월 6일
0

Beautiful Soup의 find_all() 메서드는 파싱된 문서 내에서 특정한 HTML 또는 XML 요소의 모든 발생을 검색하는 데 사용된다. 이는 지정한 조건을 충족하는 모든 일치하는 요소의 리스트(list)를 반환한다. 이 메서드는 동일한 태그 이름, 속성 또는 다른 조건을 공유하는 여러 요소를 추출하고자 할 때 특히 유용하다. 출력은 리스트 형식으로 제공되기 때문에, 각 요소를 개별적으로 반복하고 처리할 수 있다.

또한 Beautiful Soup은 텍스트 데이터를 추출하는 여러 가지 방법을 제공한다. 예를 들어, text(), get_text() 메서드는 선택한 요소와 그 모든 하위 요소의 텍스트 내용을 추출한다. 또한 .string 속성을 사용하여 단일 태그의 텍스트 내용을 추출할 수도 있다.

# class가 "content"인 모든 요소 찾기
content_elements = soup.find_all(class_='content')
for element in content_elements:
    print(element.text)

위와 같이 리스트 내의 요소들을 반복문을 통해 접근할 수 있다.

또는, get_text() 메서드를 사용할 수 있다.

from bs4 import BeautifulSoup

html = '''
<div class="article">
    <h2>Beautiful Soup 소개</h2>
    <p class="content">Beautiful Soup는 웹 스크래핑과 HTML 파싱을 위한 파이썬 라이브러리입니다.</p>
    <p class="content">웹 페이지에서 정보를 추출하는 편리한 방법을 제공합니다.</p>
</div>
'''

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

# <div> 요소와 하위 모든 요소의 텍스트 추출
all_text = soup.get_text()
print(all_text)

결과:

Beautiful Soup 소개
Beautiful Soup는 웹 스크래핑과 HTML 파싱을 위한 파이썬 라이브러리입니다.
웹 페이지에서 정보를 추출하는 편리한 방법을 제공합니다.

또한, .string 속성을 사용할 수도 있다.

# <h2> 태그의 텍스트 추출
h2_text = soup.h2.string
print(h2_text)

결과:

Beautiful Soup 소개

만약 href 값이 포함된 HTML 코드가 있다면, 아래와 같이 get() 메서드를 이용해 href의 url 값만을 추출할 수 있다.

html = '''
<div class="links">
    <a href="https://www.example.com">Example Domain</a>
    <a href="https://www.google.com">Google</a>
    <a href="https://www.wikipedia.org">Wikipedia</a>
</div>
'''

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

# Find all <a> elements within the <div> with class "links"
anchor_elements = soup.find_all('a', class_='links')

# Access and print the href values using the get() method
for anchor in anchor_elements:
    href_value = anchor.get('href')
    print(href_value)

0개의 댓글