Python - bs4, проверьте, имеет ли класс значение - PullRequest
0 голосов
/ 16 декабря 2018

Итак, я играл с bs4 abit и обнаружил проблему, которую мне не удалось решить.Что я хочу сделать, так это то, что если в классе есть значение, то мы передаем, а если в классе нет значения, мы продолжаем.

Ситуация первая:

<option class="disabled RevealButton" value="1_120">
                            Overflow                        </option>


<option class="disabled RevealButton" value="1_121">
                            Stack                       </option>


<option class="disabled RevealButton" value="1_122">
                            !!!                        </option>

Ситуация 2

<option class="" value="1_120">
                            Overflow                        </option>


<option class="" value="1_121">
                            Stack                       </option>


<option class="" value="1_122">
                            !!!                        </option>

То, что я сейчас сделал, это:

try:
    select_tags = bs4.find('select', {'autocomplete': 'off'})
except Exception:
    select_tags = []

for select_tag select_tags:

    print(select_tag)

и что он делаетпрямо сейчас, это его печать либо первой ситуации, либо второй.

То, что я хочу для вывода, выглядит следующим образом:

если класс содержит отключено RevealButton , тогда мы просто передаем и продолжаемцикл.

если класс НЕ содержит 'отключено RevealButton' , то мы выводим select_tag

У меня естьПонятия не имею, что я могу сделать, чтобы решить мою проблему!

1 Ответ

0 голосов
/ 16 декабря 2018

Чтобы проверить, имеет ли элемент классы disabled и RevealButton, вы можете использовать словарь-интерфейс элементов BeautifulSoup (Tag instance):

"disabled" in element["class"] and "RevealButton" in element["class"]

Примечание: вам нужно применить это к элементу option.

Обратите внимание, что class является специальным многозначным атрибутом , а его значением является список.


Другим вариантом (без каламбура) будет поиск элемента option с обоими классами:

for select_tag in select_tags:
    if select_tag.select("option.disabled.RevealButton"):
        continue

    print(select_tag)

Здесь option.disabled.RevealButton - это CSS-селектор , который будет соответствовать option элементы, имеющие классы disabled и RevealButton.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...