2010-09-04 45 views
2

我試圖從使用lxml的如何使用LXML

最好的我已經能夠做到,得到的元素的列表中刪除評論進入評論是:

no_comments=[element for element in element_list if 'HtmlComment' not in str(type(each))] 

我想知道如果有更直接的方法?

我會根據馬修的回答添加一些東西 - 他幾乎在那裏得到了我的問題是,當元素從樹中取出時,註釋會失去一些標識(我不知道如何描述它),以至於它不能確定它們是否是使用isinstance()方法

然而HtmlComment類對象,當元件被通過迭代上樹

from lxml.html import HtmlComment 
no_comments=[element for element in root.iter() if not isinstance(element,HtmlComment) 

對於像我根那些新手可以使用該方法是保存樹中所有其他元素的基本html元素,有許多方法來獲取它。一是要打開的文件,並通過它遍歷所以不是root.iter()在上述

html.fromstring(open(r'c:\temp\testlxml.htm').read()).iter() 

回答

1

你可以切出字符串:

from lxml.html import HtmlComment # or similar 
no_comments=[element for element in element_list if not isinstance(element, HtmlComment)] 
+0

沒有工作,我的名單還包括了評論Humm,但它可能會早些工作element_list中的元素,如果他們的評論是評論 - 這是否有道理?作爲註釋的元素是<! - COMMAND = ADD_BASECOLOR,「Black」 - >,不是註釋的元素是 PyNEwbie 2010-09-04 22:37:22

+0

但是它在這裏工作元素= [e for the Tree .cssselect('text')[0] .iter())如果不是isinstance(e,HtmlComment)] – PyNEwbie 2010-09-04 22:41:56