[python] 파이썬 BeautifulSoup으로 속성 기반 필터링

때로는 웹 페이지의 특정 요소를 속성 기반으로 필터링해서 가져와야 할 때가 있습니다. BeautifulSoup은 파이썬에서 웹 스크래핑을 쉽게 할 수 있도록 도와주는 라이브러리입니다. 이번 포스트에서는 BeautifulSoup을 사용하여 속성 기반 필터링을 어떻게 할 수 있는지 알아보겠습니다.

필요한 라이브러리 설치하기

먼저 BeautifulSoup을 사용하기 위해 필요한 라이브러리를 설치해야 합니다. 아래 명령어를 사용하여 설치할 수 있습니다.

pip install beautifulsoup4

웹 페이지 가져오기

먼저 웹 페이지를 가져와서 BeautifulSoup 객체로 변환해야 합니다. requests 라이브러리를 사용하여 웹 페이지를 가져올 수 있습니다. 아래는 예시입니다.

import requests
from bs4 import BeautifulSoup

url = "https://example.com"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

속성 기반 필터링

이제 가져온 웹 페이지에서 특정 속성 값을 가진 요소들을 필터링하여 가져올 수 있습니다. 예를 들어, class 속성 값이 “content”인 모든 요소를 가져오고 싶다면 다음과 같이 작성할 수 있습니다.

elements = soup.find_all(class_="content")
for element in elements:
    print(element.text)

위 코드에서 find_all 메소드를 이용하여 웹 페이지에서 class 속성 값이 “content”인 모든 요소를 가져옵니다. 그리고 각 요소의 텍스트를 출력합니다.

또 다른 예시로, 속성 값으로 일부 단어를 포함하는 요소들을 가져오고 싶다면 정규 표현식을 사용할 수 있습니다. 다음은 href 속성 값에 “example”이 포함된 모든 링크를 가져오는 예시입니다.

import re

links = soup.find_all(href=re.compile("example"))
for link in links:
    print(link.get("href"))

위 코드에서 find_all 메소드의 href 인자에서 정규 표현식을 사용하여 “example”을 포함하는 모든 링크를 가져옵니다. 그리고 각 링크의 href 속성 값을 출력합니다.

결론

이렇게 BeautifulSoup을 사용하여 속성 기반 필터링을 할 수 있습니다. 위의 예시들을 참고하여 웹 페이지에서 원하는 요소들을 속성 값을 기반으로 쉽게 가져올 수 있습니다. BeautifulSoup은 웹 스크래핑 작업을 더욱 편리하게 만들어주는 강력한 도구입니다.


참고 자료: