如何使用lxml访问注释
我正在尝试从一个用lxml获取的元素列表中删除注释。
我目前能做到的最好效果是:
no_comments=[element for element in element_list if 'HtmlComment' not in str(type(each))]
我在想有没有更直接的方法?
我想根据Matthew的回答再补充一点——他让我快到了,但问题是,当从树中提取元素时,注释失去了一些身份(我不知道怎么描述),所以无法通过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 个回答
1
你可以剪切出这些字符串:
from lxml.html import HtmlComment # or similar
no_comments=[element for element in element_list if not isinstance(element, HtmlComment)]