BeautifulSoup:从叶子到根搜索,以获得最深的"元素第一?

时间:2014-04-21 12:54:07

标签: python documentation beautifulsoup lxml html5lib

对于类似于this one的研究项目,我想从python documentation.中提取所有“文档单元” python文档中的文档单元可以是(如html-meta标记):

  • 方法(dl类:方法)
  • 一个类(dl class:class)
  • 一节(div class:section)

正如您可能猜到的,这些应该是这样嵌套的:一个部分包含几个类,其中包含几个方法。但实际上这是非常不规律的。

Example1:如果一个部分包含几个类和方法:我想单独获取每个方法,并且每个类都没有方法(我已经获得)和没有类的部分(我已经在那种情况下)和没有方法(我也已经拥有),但与其余的(因为那里有很多额外的东西)

示例2:如果方法或类没有出现的部分,我也想要它们,如上所述,不要忘记它们。

注意:不会让它变得更容易,但我希望将所有这些内容放在与原始文档中相同顺序的列表中。

我尝试使用BeautifulSoup但我想为此目的我需要搜索“从叶到根”以获得最深的元素 - 这是(afaik)不受BeautifulSoup4支持。

First i thought the problem is to avoid duplicates但实际上这不是主要问题。

我很感激你的提示。

1 个答案:

答案 0 :(得分:0)

似乎这是不可能的。

所以我解决这个问题的方法是一次又一次地迭代元素(我使用.descendants),然后用占位符替换嵌套元素以使该更改可见(使用replace_with)。 / p>

正如我之前使用过.descendants,无论如何都会存储嵌套元素。