Recursion 带靓汤的递归搜索

Recursion 带靓汤的递归搜索,recursion,beautifulsoup,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> 子列表是空的,因此我无

我正在尝试从嵌套的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>

子列表是空的,因此我无法深入挖掘结构。我已经查看了解释使用findAll在树标记上迭代的答案,但没有发现一个问题,即漂亮的Soup看不到html嵌套。它可能是一个糟糕的解析器吗?我已经安装了html5lib。

您没有id为container_2tag的标记

孩子们可以找到

>>> 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

请提供您使用导入和有效html编写的完整代码好吗?当然:从bs4导入美化组导入urllib2新建\u url=http://www.skyscanner.net/flights/lond/nyca/130515/130525/airfares-from-london-to-new-york-in-may-2013.html soup=beautifulsoupurlib2.urlopenstrnew\u url day\u combined=soup.finddiv,id=day\u combined children=day\u combined.findChildren打印children当我查看html文档时,它确实不是嵌套的。只有在Firebug中嵌套的信息才可见..如果我使用container_2tag=soup.finddiv,id=container_2,那么它就可以工作了,请参见编辑的答案OK,我的问题是,我提供的虚拟html是文件的Firebug版本-这种嵌套在原始html中似乎不像在浏览器中那样可见-为什么会这样?也许一些javascript正在调用服务器端进程,然后修改dom?如果是这种情况,您可能必须使用类似scrapy的东西,在检索过程中可以执行客户端javascript。这是html:这是Firebug html:我如何知道发生了什么?class=viewport和class=day\u resultslist排序的pk嵌入在何处
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