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
J'ai assemblé le code (moche) ci-dessus en tant qu'initiations initiales en territoire python. J'essaie d'utiliser le nettoyeur lxml pour nettoyer quelques pages html, donc à la fin, je suis juste parti avec le texte et rien d'autre - mais essayez comme je le fais, le ci-dessus ne semble pas fonctionner comme tel, je suis toujours à gauche avec une quantité substial de balisage (et il ne marche pas semble être cassé html), et en particulier des liens qui ne sont pas enlevés se, malgré les args j'utiliser dans remove_tags
et links=True
python [lxml] - nettoyage des balises HTML
une idée ce qui se passe, peut-être Im aboyant le mauvais arbre avec lxml? Je pensais que c'était la voie à suivre avec l'analyse html en python?
Je ne suis pas en mesure de reproduire le problème en utilisant http : //stackoverflow.com/questions/2950131/python-lxml-cleaning-out-html-tags/2950223#2950223 en entrée. Pourriez-vous fournir un échantillon du code HTML et de la sortie désirée? – unutbu
~ unutbu c'est le plus étrange - j'ai une base de données entière où ce code n'a pas fonctionné - et pourtant, il semble fonctionner très bien maintenant? (Avez-vous fait quelque chose :)?) mais tout en im à elle, une idée que vous pouvez aussi prendre le lien texte sur, lors du retrait du lien (en raison atm laisse le texte des liens). –
@sadhu_: 'remove_tags' supprime uniquement les tags eux-mêmes; il laisse ses enfants et le texte. Utilisez 'kill_tags' pour supprimer l'arbre entier. – jfs