在python中减去html Div标签

时间:2011-12-23 10:25:56

标签: python html beautifulsoup lxml dom-manipulation

我们如何从python中的Html字符串中减去div标签?

例如, 我的Html DOM就像

 <html>
 <div id ="main">
   <div id = "child1">
     ....(some doms)
   </div>
   <div id="child2">
      .......(some nested dom)
   </div>
 </div>
 </html>

在这个结构中,我需要从“div #main”减去“div#child2”

div "main" - div "child2" = div "child1"

,即我需要以这种方式获得“div#child1”

我为什么要这样,

就“child1”而言,包含动态广告(一些动态加载内容),它可能不存在。我无法使用“child1”id直接获取该内容

我在BeautifulSoup()中尝试过它。版本 = 3.0.7a

   >>>div = BeautifulSoup.BeautifulSoup('div',{'id':'child1'})
   >>>div
      []

请您帮忙解决上述要求吗?

1 个答案:

答案 0 :(得分:1)

你的问题不是很清楚。您想要在某个元素之前获取所有元素吗?

import lxml.html as lh

html = """
<div id="div1">
</div>
<div id="div2">
</div>
"""

tree = lh.fromstring(html)

for el in tree.xpath("div[@id='div2']/preceding-sibling::div"):
    print el.attrib['id']

<强>结果:

div1