2011-12-23 63 views
0

我們如何從python中的Html字符串中減去div標籤?減去python中的html div標籤

例如, 我的HTML DOM就像

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

在這種結構中,我需要從 「分區#main」 到 「DIV#的child2」

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

,即我需要減去獲得「分區#child1」這樣

爲什麼我想這種方式,

關於「child1」包含動態廣告(一些動態加載內容),它可能存在也可能不是。我無法直接使用「child1」ID獲得該內容

我試過它在BeautifulSoup()中。 版本 = 3.0.7a

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

能否請您協助上述規定解決這一問題?

+0

你要找的內容是使用id = child1從原始的HTML移除'div'? – jcollado 2011-12-23 11:08:44

+0

@jcollado我必須得到與id =「child1」數據的div只pull.I想div div div2從div main.So我可以得到div的child1存儲在我的數據庫。 – Nava 2011-12-23 11:25:43

+0

爲什麼你需要「放下」一個元素才能夠提取另一個元素?只需使用一個選擇器來獲取所需的元素,並忽略其他所有內容。 – Acorn 2011-12-23 12:55:44

回答

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