比较容器标签的“类”

问题描述 投票:1回答:1

假设我从HTML中提取了一些类:

p_standards = soup.find_all("p",attrs={'class':re.compile(r"Standard|P3")})

for p_standard in p_standards:
    print(p_standard)

并且输出看起来像这样:

<p class="P3">a</p>
<p class="Standard">b</p>
<p class="P3">c</p>
<p class="Standard">d</p>

并且假设我只想在P3 classes中打印文本,以便输出看起来像:

a
c

我以为下面的代码可以工作,但是没有。如何将容器标签的class名称与某个值进行比较?

p_standards = soup.find_all("p",attrs={'class':re.compile(r"Standard|P3")})

for p_standard in p_standards:
    if p_standard.get("class") == "P3":
        print(p_standard.get_text())

我知道在第一行中,我可以简单地完成r"P3"而不是r"Standard|P3",但这只是实际代码的一小部分(不是全文),我需要离开第一行。

注意:做类似.find("p", class_ = "P3")的操作仅适用于后代,不适用于容器标签。

beautifulsoup
1个回答
0
投票

好,所以在玩完代码后,事实证明这是>]

p_standard.get("class")[0] == "P3"

作品。 (我错过了[0]

因此此代码有效:

p_standards = soup.find_all("p",attrs={'class':re.compile(r"Standard|P3")})

for p_standard in p_standards:
    if p_standard.get("class")[0] == "P3":
        print(p_standard.get_text())
© www.soinside.com 2019 - 2024. All rights reserved.