Я пытаюсь удалить комментарии из списка элементов, которые были получены с помощью lxml
Лучшее, что я смог сделать, это:
no_comments=[element for element in element_list if 'HtmlComment' not in str(type(each))]
Мне интересно, есть лиэто более прямой путь?
Я собираюсь добавить кое-что, основываясь на ответе Мэтью - он почти дошел до меня, проблема в том, что когда элемент берется из дерева, комментарии теряют некоторую идентичность (я незнать, как его описать), чтобы не было возможности определить, являются ли они объектами класса HtmlComment, с помощью метода isinstance ()
Однако этот метод можно использовать, когда элементы итерируются в дереве
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()