7
votes

Nettoyer le code HTML Ugly WYSIWYG? Python ou * Nix Utility

Je mettez enfin la mise à niveau ( réécriture ;)) ma première application Django, mais je migre tout le contenu.

J'ai gagné des utilisateurs un éditeur complet wysiwyg pour certaines tâches, le code HTML produit est bien sûr terriblement laids avec plus de balises supplémentaires que de contenu.

Est-ce que quelqu'un connaît une application de bibliothèque ou de shell externe que je pourrais utiliser pour nettoyer le code?

J'utilise parfois bien rangé, mais aussi loin que je sache que je ne fais pas ce que je demande. Je veux simplifier toutes les étiquettes d'une longueur supplémentaire et d'autres tags à ordures. J'ai nettoyé les styles d'offenses les plus offensives avec une certaine regex, mais je prendrais vraiment beaucoup de temps à faire tout ce qui est de plus en utilisant juste regex.

Des idées?


2 commentaires

La réponse standard est belle soupe . "Extra Span" et "Tags à ordures" sont quelque chose que vous devez définir très, très soigneusement afin que vous puissiez supprimer les balises sans retirer du contenu.


C'est pourrait une meilleure idée de refaire le HTML plutôt que de désinfecter celui que vous avez.


3 Réponses :


0
votes

La réponse standard est Belle soupe .

"EXTRA SPAN" et "Tags à ordures" est quelque chose que vous devez définir très, très soigneusement afin que vous puissiez retirer les étiquettes sans retirer le contenu.

Je vous suggérerais de faire deux choses.

  1. correction de votre application afin que les utilisateurs ne fournissent en aucune circonstance html. Django peut utiliser RST Markup, ce qui est beaucoup plus convivial. http://docs.djangoproject.com/fr/ 1.3 / Réf / Modèles / Construits / # Django-contribu-markup

  2. Écrivez un bel analyseur à soupe et transformez le contenu dans le marquage RST. Gardez les éléments structurels (en-têtes, listes, etc.) et perdez le formatage dans la mesure du possible.


0 commentaires

2
votes

Une belle soupe vous obtiendra probablement une solution plus complète, mais vous pourrez peut-être obtenir un nettoyage plus simplement avec HTML5LIB (si vous êtes correct avec les règles HTML5):

html_parser = html5lib.HTMLParser(tree=treebuilders.getTreeBuilder("dom"), tokenizer=sanitizer.HTMLSanitizer)


0 commentaires

3
votes

Vous pouvez également jeter un coup d'œil sur Bleach Un désinfectant HTML basé sur la liste blanche. Il utilise HTML5Lib pour faire ce que Kyle posté, mais vous obtiendrez beaucoup plus de contrôle sur quels éléments et attributs sont autorisés dans la sortie finale.


0 commentaires