假设我从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")
的操作仅适用于后代,不适用于容器标签。
好,所以在玩完代码后,事实证明这是>]
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())