如何使用lxml访问注释

时间:2010-09-04 22:18:03

标签: python html parsing 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)

对于像我这样的新手,root是保存树中所有其他元素的基本html元素,有很多方法可以获得它。一种是打开文件并迭代它,而不是上面的

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

1 个答案:

答案 0 :(得分:1)

你可以剪掉字符串:

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