Python-bs4,检查类是否具有值

时间:2018-12-15 23:57:52

标签: python beautifulsoup

因此,我一直在尝试使用bs4,发现了一个我无法解决的问题。我想做的是,如果一个类中有一个值,那么我们通过;如果一个类中没有任何值,那么我们继续。

情况一:

<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 ,那么我们只需传递并继续循环。

如果类包含'disabled RevealButton',则我们打印出 select_tag

我不知道该怎么办才能解决我的问题!

1 个答案:

答案 0 :(得分:2)

要检查某个元素是否具有disabledRevealButton类,可以使用dictionary-like interface的BeautifulSoup元素(Tag实例):

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

注意:您需要在option元素上应用它。

请注意,class是一个特殊的multi-valued attribute,其值是一个列表。


另一个选择(没有双关语)将查找两个类的option元素:

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

    print(select_tag)

在这里,option.disabled.RevealButton是一个CSS selector,它将与同时具有optiondisabled类的RevealButton元素相匹配。