使用Beautiful Soup进行递归搜索

时间:2013-05-01 13:03:07

标签: recursion beautifulsoup

我试图从嵌套的html标签中提取信息:

<div id="container">
    <div id="cover_1" class="default"></div>
    <div id="container_2">
        <div class="blue">
        <div id="container_3" class="red">
    </div>

但是,当我尝试通过以下方式检查container_2的子项时:

container_2tag = soup.find("div", id = "container_2")

children = container_2tag.findChildren()

子列表是空的,所以我无法深入挖掘结构。我已经查看了使用findAll解释树标记迭代的答案,但是找不到美丽的汤不可见html嵌套的问题。它可能是一个糟糕的解析器吗? (我已经安装了html5lib)..

1 个答案:

答案 0 :(得分:0)

您没有ID为container_2tag的标记

DO

container_2tag = soup.find("div", id = "container_2")

可以找到孩子们

>>> children = container_2tag.findChildren()
>>> children
[<div class="blue">
<div id="container_3" class="red">
</div>
</div>, <div id="container_3" class="red">
</div>]
>>> children[0]
<div class="blue">
<div id="container_3" class="red">
</div>
</div>
>>> children[1]
<div id="container_3" class="red">
</div>
>>> children[2]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range