Python프로그래밍

[Python] 파이썬 크롤링 beautifulSoup 결과 정렬(sorted) 방법

파이썬으로 크롤링한 결과를 정렬하고자하였다. 그리하여 리스트 정렬시 사용하는 sorted()함수를 사용하여보았다.

그랬더니 다음과 같은 오류가 발생되었다.

AttributeError: ResultSet object has no attribute ‘sorted’. You’re probably treating a list of elements like a single element. Did you call find_all() when you meant to call find()?

Traceback (most recent call last):
  File "C:\python\Workspace\main.py", line 66, in <module>
    parsing_game_info(div_list)
  File "C:\python\Workspace\main.py", line 29, in parsing_game_info
    item_list.sorted()
  File "C:\Users\ilike\AppData\Local\Programs\Python\Python39\lib\site-packages\bs4\element.py", line 2173, in __getattr__
    raise AttributeError(
AttributeError: ResultSet object has no attribute 'sorted'. You're probably treating a list of elements like a single element. Did you call find_all() when you meant to call find()?

beautifulSoup 라이브러리를 사용한 결과값은 리스트가 아닌 ResultSet 오브젝트에 담긴다는 사실을 알게되었다.

그리고 오류 내용과 같이 ResultSet 오브젝트에는 sorted() 속성값이 존재하지 않는다.

sort()속성은 사용할 수 있다. 하지만 html 태그와 태그사이에서는 소팅할 수 없고 아래와 같은 오류가 발생한다.

Traceback (most recent call last):
  File "C:\python\Workspace\main.py", line 68, in <module>
    parsing_game_info(div_list)
  File "C:\python\Workspace\main.py", line 29, in parsing_game_info
    item_list.sort()
TypeError: '<' not supported between instances of 'Tag' and 'Tag'

아래와 같이 사용하면 정렬할 수 있는데, ResultSet 결과에 태그가 있어서 정렬되지않는다.

sorted(item_list, key=lambda elem: elem.text)

# reverse 변수는 부울형으로 True 이면 내림차순
sorted(item_list, key=lambda student: student[2], reverse=True)

태그가 없다면 정렬 가능하다.

error: Content is protected !!