Я получаю все точности определенного тега (td) с помощью find_all (), но я хочу обрабатывать разные классы. Мои теги выглядят примерно так:

<td class="classname" colspan="2">
Something ...
</td>

Я хочу делать разные вещи в зависимости от имени класса.

Я пробовал использовать has_attr (), но он проверяет только наличие одного атрибута и не работает для всех выражений.

    for tag in soup.find_all("td"):
        if tag.has_attr("td", {"class": "search-detail-heading"}):
            Do Something()
        if tag.has_attr("td", {"class": "search-detail-subject"}):
            Do Something else()

Есть ли другой способ проверить это имя класса? Мне нужно настроить find_all ()? Я как бы не хочу использовать find_all () для одного типа, а затем снова для следующего типа.

0
Birk 26 Ноя 2021 в 14:57

1 ответ

Лучший ответ

Вы можете вернуть информацию об атрибутах тега td в виде списка, используя этот код:

for tag in soup.find_all("td"):
    print(list(tag.find("div").attrs.keys()))
0
Ekky Armandi 26 Ноя 2021 в 15:13
Это мило. Но это не tag.find () . Только tag.attrs.values ​​() , потому что я уже нашел теги с find_all () . Также мне нужны значения, а не ключи, ха-ха. Спасибо, это очень помогло. for tag in soup.find_all("td"): print(list(tag.attrs.values()))
 – 
Birk
26 Ноя 2021 в 16:09
О, ты мой плохой. Я просто копирую и вставляю свой код, не просматривая его снова. Я так рада, если это поможет.
 – 
Ekky Armandi
26 Ноя 2021 в 16:55