[python] Beautiful Soup로 웹 페이지에서 특정 속성으로 정렬 후 필터링하기
Beautiful Soup은 파이썬에서 웹 스크래핑을 할 때 사용되는 라이브러리입니다. 이 라이브러리를 사용하면 HTML 문서에서 원하는 데이터를 쉽게 추출할 수 있습니다.
이번 예제에서는 Beautiful Soup를 사용하여 웹 페이지에서 특정 속성으로 정렬한 후, 필터링하는 방법을 알아보겠습니다.
필요한 라이브러리 설치하기
Beautiful Soup를 사용하기 위해서는 먼저 bs4
라이브러리를 설치해야 합니다. 아래의 명령어를 사용하여 설치할 수 있습니다.
pip install bs4
예제 코드
from bs4 import BeautifulSoup
# 크롤링할 웹 페이지 URL
url = "https://example.com"
# 웹 페이지를 가져와서 Beautiful Soup 객체로 변환
html = "<html>...</html>"
soup = BeautifulSoup(html, "html.parser")
# 원하는 속성으로 정렬하기
sorted_elements = soup.find_all("tag", attrs={"attribute": "value"})
sorted_elements.sort(key=lambda x: x["attribute"])
# 필터링하기
filtered_elements = [element for element in sorted_elements if element["attribute"] == "value"]
# 결과 출력
for element in filtered_elements:
print(element.text)
코드 설명
bs4
모듈에서BeautifulSoup
클래스를 import 합니다.- 크롤링할 웹 페이지의 URL을
url
변수에 저장합니다. requests
모듈을 사용하여 웹 페이지의 HTML 내용을 가져옵니다. (이 부분은 예제를 위해 대신에 HTML 코드로 변수html
에 저장한 것입니다.)BeautifulSoup
클래스의 생성자를 사용하여html
변수의 내용을 파싱하여soup
객체를 생성합니다.find_all()
메서드를 사용하여 원하는 태그와 속성으로 요소를 검색합니다.attrs
파라미터에는 속성의 이름과 값으로 이루어진 딕셔너리를 전달해주어야 합니다.sort()
메서드를 사용하여 검색된 요소들을 원하는 속성으로 정렬합니다. 이 예제에서는lambda
함수를 사용하여 속성의 값을 비교하는 방식으로 정렬하고 있습니다.- 리스트 컴프리헨션을 사용하여 필터링된 요소들을 새로운 리스트에 저장합니다. 이 예제에서는 필터링 조건으로
attribute
속성의 값을 사용하고 있습니다. - 필터링된 요소들을 순회하면서 해당 요소의 텍스트를 출력합니다.
참고 자료
- Beautiful Soup 공식 문서
- Beautiful Soup Tutorial (Real Python)
- Web Scraping with Python and BeautifulSoup