Код сортирует не так, как надо
Написал код, который на вход принимает ссылки и должен вывести названия фильмов, которые содержатся в обоих HTML кодах сайтов. Все работает, но почему-то нет сортировки по алфавиту в названии. Как можно исправить?
import requests
from bs4 import BeautifulSoup
def main(links):
best_films = []
for link in links:
response = requests.get(link)
response.encoding = 'utf-8'
soup = BeautifulSoup(response.text, 'lxml')
all_films = soup.find_all('tr')
for film in all_films:
one_film = film.find_all('td')
for _ in one_film:
name_film = one_film[0].text
rate_film = int(one_film[3].text)
best_films.append((name_film, rate_film))
best_films.sort(key=lambda x: x[1], reverse=True)
print(best_films[0][0])
best_films.clear()
if __name__ == '__main__':
link_list = []
while 1 == 1:
some_link = input()
if some_link.lower() == 'конец':
break
link_list.append(some_link)
main(link_list)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<table>
<tr>
<th>Название фильма</th>
<th>Режиссёр</th>
<th>Актёрский состав</th>
<th>Рейтинг фильма</th>
<th>Год</th>
</tr>
<tr>
<td>Седьмая печать</td>
<td>Ингмар Бергман</td>
<td>Макс фон Сюдов, Гуннар Бьёрнстранд, Биби Андерссон</td>
<td>5</td>
<td>1957</td>
</tr>
<tr>
<td>Остров проклятых</td>
<td>Мартин Скорсезе</td>
<td>Леонардо Ди Каприо, Марк Руффало, Бен Кингсли, Эмили Мортимер</td>
<td>4</td>
<td>2010</td>
</tr>
<tr>
<td>Земляничная поляна</td>
<td>Ингмар Бергман</td>
<td>Виктор Шёстрём, Ингрид Тулин, Биби Андерссон</td>
<td>5</td>
<td>1957</td>
</tr>
<tr>
<td>Час волка</td>
<td>Ингмар Бергман</td>
<td>Макс фон Сюдов, Лив Ульман, Ингрид Тулин</td>
<td>3</td>
<td>1968</td>
</tr>
</table>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<table>
<tr>
<th>Название фильма</th>
<th>Режиссёр</th>
<th>Актёрский состав</th>
<th>Рейтинг фильма</th>
<th>Год</th>
</tr>
<tr>
<td>Земляничная поляна</td>
<td>Ингмар Бергман</td>
<td>Виктор Шёстрём, Ингрид Тулин, Биби Андерссон</td>
<td>5</td>
<td>1957</td>
</tr>
<tr>
<td>Фанни и Александр</td>
<td>Ингмар Бергман</td>
<td>Ева Фрёлинг, Бертил Гуве, Пернилла Альвин</td>
<td>5</td>
<td>1982</td>
</tr>
<tr>
<td>Седьмая печать</td>
<td>Ингмар Бергман</td>
<td>Макс фон Сюдов, Гуннар Бьёрнстранд, Биби Андерссон</td>
<td>5</td>
<td>1957</td>
</tr>
</table>
</body>
</html>
Ответы (1 шт):
Автор решения: Сергей
→ Ссылка
Тогда так, лучший фильм на каждом сайте заносите еще в один список и сортируете его после завершения сканирования всех сайтов
best_films.sort(key=lambda x: x[1],
reverse=True)
f.append(best_films[0][0])
best_films.clear()
f.sort()
