Не могу получить href из html файла

Zerproter

Новичок
Пользователь
Фев 20, 2022
17
0
1
Использую виндоус 10 и пайтон 3.8
Есть html файл с 2 "Шаблонами"
1 шаблон:

HTML:
 <td class="leaderboard_has_battles">
                                <a href="ССЫЛКА ЧТО НУЖНА" class="text-truncate">
                        <div class="float-left leaderboard_icon pr-2">
                            <img src="https://cdn.wildstats.gg/images/champions/icons/10016.jpg"/>
                            <div>40</div>
                        </div>
                        <span class="leaderboard_icon_name">Doomsdays</span>
                    </a>
                                            <div class="leaderboard_swords" data-toggle="tooltip" title="Battle Stats Available"></div>
                                    </td>
2 шаблон:

HTML:
<td>
                                        <a href="ССЫЛКА ЧТО НЕ НУЖНА" class="text-truncate">
                        <div class="float-left leaderboard_icon pr-2">
                            <img src="https://cdn.wildstats.gg/images/champions/icons/10037.jpg"/>
                            <div>40</div>
                        </div>
                        <span class="leaderboard_icon_name">Pazienza Youtube</span>
                    </a>
                                    </td>
Мне нужно получить href только из шаблонов подобных 1(их в файле несколько и количество может меняться)
Если использовать код :

Python:
from bs4 import BeautifulSoup
import requests

# with open("index.html", 'w', encoding='utf-8') as file:
#     file.write(text)


with open("index.html", encoding='utf-8') as file:
    text = file.read()

soup = BeautifulSoup(text, "lxml")
open_acc = soup.find_all(class_="leaderboard_has_battles")

for item in open_acc:
    item_url = item.get('href')
    print(item_url)

То вместо ссылок я получу в ответе None. Так что нужно изменить в коде что бы получить href?
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
971
219
43
20
Москва
Python:
open_acc = soup.select("td.leaderboard_has_battles a")
 
  • Мне нравится
Реакции: Zerproter

Zerproter

Новичок
Пользователь
Фев 20, 2022
17
0
1
Python:
open_acc = soup.select("td.leaderboard_has_battles a")
Спасибо! Но я по документации так и не понял что делает селектор. Почему при указании тэга он пишет href? Вы могли бы написать подробнее?
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
971
219
43
20
Москва
ты использовал для поиска метод find_all в который можно передать нужные параметры. Метод select принимает CSS селектор.
В данном случае "td.leaderboard_has_battles a" значит:
Найти все td у которых есть класс leaderboard_has_battles и в каждом из них найти тег a

У тебя ошибка была в том, что ты в качестве элемента брал тег td, у него нет ссылки. Ссылка есть у тега a, который находится в теге td
 

Zerproter

Новичок
Пользователь
Фев 20, 2022
17
0
1
ты использовал для поиска метод find_all в который можно передать нужные параметры. Метод select принимает CSS селектор.
В данном случае "td.leaderboard_has_battles a" значит:
Найти все td у которых есть класс leaderboard_has_battles и в каждом из них найти тег a

У тебя ошибка была в том, что ты в качестве элемента брал тег td, у него нет ссылки. Ссылка есть у тега a, который находится в теге td
Cпасибо, теперь понятно. Удачи вам.
 

Форум IT Специалистов