Как при помощи bs4 получить несколько значений из html файлов

Zerproter

Новичок
Пользователь
Фев 20, 2022
17
0
1
Сложный вопрос, сформулировать его ещё сложнее(а мб я глупенький)
Есть html файлов из которых нужно достать одну и ту же информацию.
самое первое это - определить в ссылке то, чью информацию нужно вытащить из файлов. Объясню :
Вот 2 отрывка из одного файла :
HTML:
<td class="text-center
                                                                        "
                                    data-toggle="tooltip"
                                    data-placement="top"
                                    title="                                    Teemo : Position Played
                                    ">

                                                                                                                        <img class="battle-details-white-icon"
                                                 src="https://cdn.wildstats.gg/images/icons/role-2.png">
                                                                                                            </td>
                                                            <td class="text-center
                                                                        "
                                    data-toggle="tooltip"
                                    data-placement="top"
                                    title="                                    Vayne : Position Played
                                    ">

                                                                                                                        <img class="battle-details-white-icon"
                                                 src="https://cdn.wildstats.gg/images/icons/role-3.png">
                                                                                                            </td>
Почти в всех файлах есть код
HTML:
<img class="battle-details-white-icon"

                                                 src="https://cdn.wildstats.gg/images/icons/role-3.png">

Из всех файлов мне нужно узнать имя персонажа что находиться выше , в тэге td в значении title "В данном случае Vayne"
Причём максимально важно что бы в классе battle-details-white-icon было значение src именно "https://cdn.wildstats.gg/images/icons/role-3.png"
Причём нужно получить только имя персонажа т.к. Position Played мне не нужно(дальше объясню почему)
Узнать нужно на 1 файл 2 таких "имени"
Используя эти данные нужно получить много разной информации из файлов.
К примеру :
HTML:
td class="text-center
                                                                        "
                                    data-toggle="tooltip"
                                    data-placement="top"
                                    title="                                    Teemo : Champion Level
                                    ">

                                                                                                                                                                        12
                                                                                                                                                        </td>
                                                            <td class="text-center
                                                                        "
                                    data-toggle="tooltip"
                                    data-placement="top"
                                    title="                                    Vayne : Champion Level
                                    ">

                                                                                                                                                                        12
                                                                                                                                                        </td>
Зная имя нужно узнать значение его уровня "Тут уровень 12"
И вот таких вот шаблонов в html файлах достаточно много(20-30 штук). Поэтому Position Played и не нужен. Меняется только то что написано после ":" и число что находится ниже.
"Имени" в одном файле 2 (под src "https://cdn.wildstats.gg/images/icons/role-3.png")
Имена естественно от файла к файлу меняются но их всегда 2.
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
То есть role-2 не нужно, только role-3?
И где уровень, во вставленных фрагментах его нет

И пожалуйста, форматируй html перед вставкой, например тут: https://webformatter.com/html

Чтобы было так
HTML:
<td
    class="text-center"
    data-toggle="tooltip"
    data-placement="top"
    title="                                    Teemo : Position Played
                                    "
>
    <img class="battle-details-white-icon" src="https://cdn.wildstats.gg/images/icons/role-2.png" />
</td>
<td
    class="text-center"
    data-toggle="tooltip"
    data-placement="top"
    title="                                    Vayne : Position Played
                                    "
>
    <img class="battle-details-white-icon" src="https://cdn.wildstats.gg/images/icons/role-3.png" />
</td>

А не так:
HTML:
<td class="text-center
                                                                        "
data-toggle="tooltip"
data-placement="top"
title=" Teemo : Position Played
">

                                                                                                                        <img class="battle-details-white-icon"
                                                 src="https://cdn.wildstats.gg/images/icons/role-2.png">
                                                                                                            </td>
                                                            <td class="text-center
                                                                        "
data-toggle="tooltip"
data-placement="top"
title=" Vayne : Position Played
">

                                                                                                                        <img class="battle-details-white-icon"
                                                 src="https://cdn.wildstats.gg/images/icons/role-3.png">
                                                                                                            </td>
 

Zerproter

Новичок
Пользователь
Фев 20, 2022
17
0
1
То есть role-2 не нужно, только role-3?
И где уровень, во вставленных фрагментах его нет

И пожалуйста, форматируй html перед вставкой, например тут: https://webformatter.com/html

Чтобы было так
HTML:
<td
    class="text-center"
    data-toggle="tooltip"
    data-placement="top"
    title="                                    Teemo : Position Played
                                    "
>
    <img class="battle-details-white-icon" src="https://cdn.wildstats.gg/images/icons/role-2.png" />
</td>
<td
    class="text-center"
    data-toggle="tooltip"
    data-placement="top"
    title="                                    Vayne : Position Played
                                    "
>
    <img class="battle-details-white-icon" src="https://cdn.wildstats.gg/images/icons/role-3.png" />
</td>

А не так:
HTML:
<td class="text-center
                                                                        "
data-toggle="tooltip"
data-placement="top"
title=" Teemo : Position Played
">

                                                                                                                        <img class="battle-details-white-icon"
                                                 src="https://cdn.wildstats.gg/images/icons/role-2.png">
                                                                                                            </td>
                                                            <td class="text-center
                                                                        "
data-toggle="tooltip"
data-placement="top"
title=" Vayne : Position Played
">

                                                                                                                        <img class="battle-details-white-icon"
                                                 src="https://cdn.wildstats.gg/images/icons/role-3.png">
                                                                                                            </td>
В следующий раз обязательно буду форматировать, не знал что что-то не так вставиться. Да вы поняли верно, нужно что бы было значение только role-3(которых 2) лвл написан в самой крайней правой части текста. Проблема именно в том что само значение любого параметра не как не обозначено, другими словами найти его через find или получить get невозможно.
 

Vershitel_sudeb

Vershitel sudeb
Команда форума
Модератор
Мар 17, 2021
973
220
43
21
Москва
Например если у тебя в файле просто такой текст:
HTML:
<td
    class="text-center"
    data-toggle="tooltip"
    data-placement="top"
    title="                                    Teemo : Position Played
                                    "
>
    <img
        class="battle-details-white-icon"
        src="https://cdn.wildstats.gg/images/icons/role-2.png"
    />
</td>
<td
    class="text-center"
    data-toggle="tooltip"
    data-placement="top"
    title="                                    Vayne : Position Played
                                    "
>
    <img
        class="battle-details-white-icon"
        src="https://cdn.wildstats.gg/images/icons/role-3.png"
    />
</td>

Героев можно получить так:
Python:
from bs4 import BeautifulSoup as bs
with open('site.html') as f:
    site = f.read()
html = bs(site, 'lxml')
data = html.find(
    'img', src='https://cdn.wildstats.gg/images/icons/role-3.png')
print(data.parent.get('title').split(':')[0].strip())
 
  • Мне нравится
Реакции: Zerproter

Zerproter

Новичок
Пользователь
Фев 20, 2022
17
0
1
Например если у тебя в файле просто такой текст:
HTML:
<td
    class="text-center"
    data-toggle="tooltip"
    data-placement="top"
    title="                                    Teemo : Position Played
                                    "
>
    <img
        class="battle-details-white-icon"
        src="https://cdn.wildstats.gg/images/icons/role-2.png"
    />
</td>
<td
    class="text-center"
    data-toggle="tooltip"
    data-placement="top"
    title="                                    Vayne : Position Played
                                    "
>
    <img
        class="battle-details-white-icon"
        src="https://cdn.wildstats.gg/images/icons/role-3.png"
    />
</td>

Героев можно получить так:
Python:
from bs4 import BeautifulSoup as bs
with open('site.html') as f:
    site = f.read()
html = bs(site, 'lxml')
data = html.find(
    'img', src='https://cdn.wildstats.gg/images/icons/role-3.png')
print(data.parent.get('title').split(':')[0].strip())
Спасибо
 

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