2013-06-29 77 views
3

我使用lxml解析某些HTML片段(來自RSS提要),爲了有效地執行此操作,我使用create_parent='div'。當我稍後輸出HTML時,我不希望將父div包含在內,因爲使用我的html佈局,它最終成爲div中的div,完全不透明。Python lxml,在輸出HTML之前刪除父元素(使用fragment_fromstring)

的代碼是現在:

from lxml.html import fragment_fromstring 

html = fragment_fromstring(html_string, create_parent = 'div') 

for tag in html.xpath('//*[@class]'): 
    tag.attrib.pop('class') 
for tag in html.xpath('//*[@id]'): 
    tag.attrib.pop('id') 

return lxml.html.tostring(html) 

TL; DR:我怎麼去除包裝DIV時輸出?

+1

這可能是答案; 「移除包裝div」通過跨過它並傳遞子節點:'lxml.etree.tostring(html_doc.xpath('*')[0])''。警告:未經測試的代碼。只使用python lxml 15年。對這些代碼進行測試的人應該寫出答案。 – Phlip

回答

2

提取子元素。

return '\n'.join(lxml.html.tostring(x) for x in html.iterchildren()) 
+0

但是,這不是提取文本節點 –

+0

@Hemant_Negi,你想要的東西像:'html.text_content()。strip()'? – falsetru

+0

我想要元素裏面的所有內容。可以包含h​​tml節點作爲文本。我認爲這只是返回文字。 –