如果文本与另一个文本位于同一div中,则美化python

vngu2lb8  于 2021-09-29  发布在  Java
关注(0)|答案(2)|浏览(208)

我试图检查文本,例如:“推荐”是否与文本“产品”位于同一个div中。html文件的结构为:

<html>
<head>
<title>Product Page</title>
</head>
<body>
<div class="div1">
<div class="div2">
<div class="divInside">
    Recommended
</div>
<div class="above">
    <div class="under"></div>
</div>
<div class="pct"></div>
<div class="prod">
    Product
</div>
</div>
</div>
</body>
</html>

这只是一个示例html文件来显示我的问题,但正如您所看到的,这两个文本都在同一个div中 div2 他们也在自己的分区里。那么我如何检查这两个文本是否都存在于 div2 类div标签?

nom7f22z

nom7f22z1#

对于html dom中的每个元素,都可以将元素的所有子元素作为列表,然后检查它们是否出现在同一个列表中(有很多方法可以做到这一点,例如,将这样的列表转换为一个集合,然后比较它们的长度)。对每个孩子重复此操作,直到孩子没有其他孩子。

n6lpvg4x

n6lpvg4x2#

一种选择是尝试以下方法(在本例中,使用css选择器):

from bs4 import BeautifulSoup as bs
data = """your html above"""
soup = bs(data,'lxml')
targets = ['Recommended', 'Product']
print(targets == list(soup.select('div.div2')[0].stripped_strings))

# or

print(targets == list(soup.select_one('div.div2').stripped_strings))

两种情况下的输出:

True

相关问题