[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)

코드 설명

  1. bs4 모듈에서 BeautifulSoup 클래스를 import 합니다.
  2. 크롤링할 웹 페이지의 URL을 url 변수에 저장합니다.
  3. requests 모듈을 사용하여 웹 페이지의 HTML 내용을 가져옵니다. (이 부분은 예제를 위해 대신에 HTML 코드로 변수 html에 저장한 것입니다.)
  4. BeautifulSoup 클래스의 생성자를 사용하여 html 변수의 내용을 파싱하여 soup 객체를 생성합니다.
  5. find_all() 메서드를 사용하여 원하는 태그와 속성으로 요소를 검색합니다. attrs 파라미터에는 속성의 이름과 값으로 이루어진 딕셔너리를 전달해주어야 합니다.
  6. sort() 메서드를 사용하여 검색된 요소들을 원하는 속성으로 정렬합니다. 이 예제에서는 lambda 함수를 사용하여 속성의 값을 비교하는 방식으로 정렬하고 있습니다.
  7. 리스트 컴프리헨션을 사용하여 필터링된 요소들을 새로운 리스트에 저장합니다. 이 예제에서는 필터링 조건으로 attribute 속성의 값을 사용하고 있습니다.
  8. 필터링된 요소들을 순회하면서 해당 요소의 텍스트를 출력합니다.

참고 자료