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
Ich habe den obigen (hässlichen) Code als meine ersten Streifzüge in Python Land. Ich versuche, LXML-Reiniger zu verwenden, um ein paar HTML-Seiten zu säubern, so am Ende bin ich nur mit dem Text und nichts anderes übrig - aber versuchen Sie, wie ich könnte, das obige scheint nicht so zu funktionieren, ich bin noch links mit einer substial Menge von Markup (und es funktioniert nicht gebrochen html zu sein scheint), und insbesondere Verbindungen, die nicht entfernt zu werden, trotz des args ich verwende in remove_tags
und links=True
python [lxml] - reinigung html tags
eine Ahnung, was los ist, vielleicht Ich bellte den falschen Baum mit lxml? Ich dachte, das war der Weg, mit HTML-Parsing in Python zu gehen?
Ich bin nicht in der Lage, das Problem zu replizieren mit http : //stackoverflow.com/questions/2950131/python-lxml-cleaning-out-html-tags/2950223#2950223 als Eingabe. Könnten Sie ein Beispiel für den HTML-Code und die gewünschte Ausgabe bereitstellen? – unutbu
~ unutbu das ist am seltsamsten - ich habe eine ganze Datenbank wo dieser Code nicht funktioniert hat - und doch scheint es jetzt gut zu funktionieren? (Hast du etwas gemacht :)?) aber während ich es bin, irgendeine Idee, wie Sie auch den Link-Text herausnehmen können, wenn Sie den Link entfernen (weil atm es den Text der Links in verlässt). –
@sadhu_: 'remove_tags' entfernt nur Tags selbst; Es hinterlässt seine Kinder und Text. Verwenden Sie 'kill_tags', um den gesamten Baum zu entfernen. – jfs