from lxml.html.clean import clean_html, Cleaner
def clean(text):
try:
cleaner = Cleaner(scripts=True, embedded=True, meta=True, page_structure=True, links=True, style=True,
remove_tags = ['a', 'li', 'td'])
print (len(cleaner.clean_html(text))- len(text))
return cleaner.clean_html(text)
except:
print 'Error in clean_html'
print sys.exc_info()
return text
Я собрал вышеуказанный (уродливый) код в качестве моих начальных набегов на землю python. Я пытаюсь использовать очиститель lxml, чтобы очистить пару html-страниц, поэтому в конце я просто оставил текст и ничего больше - но попробуйте, как я мог, выше, похоже, не работает как таковой, я по-прежнему остаются с substial количеством разметки (и оно не кажется, сломан HTML), и в частности, ссылки, которые не получают удалены, несмотря на аргументы я использую в remove_tags
и links=True
python [lxml] - очистка html-тегов
любой идея, что происходит, возможно, im лаять неправильное дерево с lxml? Я думал, что это способ пойти с синтаксисом html в python?
Я не в состоянии воспроизвести проблему с помощью HTTP : //stackoverflow.com/questions/2950131/python-lxml-cleaning-out-html-tags/2950223#2950223 в качестве входных данных. Не могли бы вы предоставить образец html и желаемый результат? – unutbu
~ unutbu это самое странное - у меня есть целая база данных, где этот код не работает - и все же, похоже, что сейчас работает нормально? (вы что-то делали :)?) но в то время как im на нем, любая идея, как вы могли бы также извлечь текст ссылки при удалении ссылки (потому что atm оставляет текст ссылок). –
@sadhu_: 'remove_tags' удаляет только теги; он оставляет своих детей и текст. Используйте «kill_tags» для удаления всего дерева. – jfs