我正在尝试从使用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()
答案 0 :(得分:1)
你可以剪掉字符串:
from lxml.html import HtmlComment # or similar
no_comments=[element for element in element_list if not isinstance(element, HtmlComment)]