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
He creado el código anterior (feo) como mis incursiones iniciales en tierra de pitón. Estoy tratando de usar el limpiador lxml para limpiar un par de páginas html, así que al final solo me queda el texto y nada más, pero por más que intente, lo anterior no parece funcionar como tal, estoy siendo la izquierda con una cantidad substial de marcado (y es imposible parece ser roto html), y en particular los vínculos, los cuales no están siendo eliminados, a pesar de los argumentos que utilizo en remove_tags
y links=True
python [lxml] - limpieza de etiquetas html
alguna idea de lo que pasa, tal vez estoy ladrando el árbol equivocado con lxml? Pensé que este era el camino a seguir con el análisis html en Python.
No soy capaz de replicar el problema utilizando HTTP : //stackoverflow.com/questions/2950131/python-lxml-cleaning-out-html-tags/2950223#2950223 como entrada. ¿Podría proporcionar una muestra del html y el resultado deseado? – unutbu
~ unutbu esto es lo más extraño - tengo toda una base de datos donde el código no funcionó - y sin embargo, parece estar funcionando bien ahora? (¿Hiciste algo :)?) pero a la vez, cualquier idea de cómo podrías sacar también el texto del enlace, al quitar el enlace (porque atm deja el texto de los enlaces). –
@sadhu_: 'remove_tags' elimina solo las etiquetas; deja a sus hijos y texto. Usa 'kill_tags' para eliminar todo el árbol. – jfs