页面的HTML:
<form name="compareprd" action="">
<div class="gridBox product " id="quickLookItem-1">
<div class="gridItemTop">
</div>
</div>
<div class="gridBox product " id="quickLookItem-2">
<div class="gridItemTop">
</div>
</div>
<!-- many more like this. -->
我正在使用美丽的汤来报废一页。在该页面中,我可以通过其名称获得表单标记。
tag = soup.find("form", {"name": "compareprd"})
现在我想计算所有直接的子div,但不是所有嵌套的div。 比方说,表格中有20个直接的div。 我试过了:
len(tag.findChildren("div"))
但它给了1500。
我认为它给了所有&#34; div&#34;内部&#34;形式&#34;标签
任何帮助表示感谢。
答案 0 :(得分:1)
您可以使用单个 css选择器 form[name=compareprd] > div
找到 div的,它们是表单中的直接子项:
html = """<form name="compareprd" action="">
<div class="gridBox product " id="quickLookItem-1">
<div class="gridItemTop">
</div>
</div>
<div class="gridBox product " id="quickLookItem-2">
<div class="gridItemTop">
</div>
</div>
</form>"""
from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
print(len(soup.select("form[name=compareprd] > div")))
或者如评论传递 recursive = True 但使用 find_all ,findChildren可以追溯到bs2天,仅提供向后兼容性。
len(tag.find_all("div", recursive=False)