Valider (X)HTML en Python
Quelle est la meilleure façon d'aller sur la validation d'un document suit une certaine version de HTML (prefereably que je peux préciser)? Je aimerais être en mesure de savoir d'où les échecs se produisent, comme dans un basé sur le web programme de validation, sauf dans un natif Python app.
- Veuillez noter que la validation est différent de rangement! Certaines des réponses que les gens sont d'affichage sont automatiquement corriger HTML, au lieu de se contenter de vérifier si le code HTML est valide ou pas.
Vous devez vous connecter pour publier un commentaire.
XHTML est facile, utilisez lxml.
HTML est plus difficile, car il n'y a pas été traditionnellement comme beaucoup d'intérêt dans le processus de validation parmi les HTML foule (exécuter StackOverflow lui-même par le biais d'un programme de validation, aïe). La solution la plus simple serait d'exécuter des applications externes telles que nsgmls ou OpenJade, puis d'analyser leur sortie.
PyTidyLib est une belle binding python pour de HTML Tidy. Leur exemple:
En outre, il est compatible avec les l'héritage de HTML Tidy et la les nouvelles de l'ordre, html5.
Je pense que la façon la plus élégante pour invoquer le Service de Validation du W3C à
par programmation. Peu de gens savent que vous n'avez pas à l'écran-gratter les résultats afin d'obtenir des résultats, car les retours de service non-standard en-tête HTTP paramètres
pour indiquer la validité et le nombre d'erreurs et d'avertissements.
Par exemple, la ligne de commande
retourne
Ainsi, vous pouvez élégamment appeler le Service de Validation du W3C et d'extraire les résultats de l'en-tête HTTP:
Vous pouvez décider d'installer le validateur HTML localement et créer un client pour demander la validation.
Ici, j'avais fait un programme pour valider une liste d'url dans un fichier txt. J'ai été vérifier simplement la TÊTE pour obtenir la validation de l'état, mais si vous faites un OBTENIR vous obtenez les résultats complets. Regardez l'API de le validateur, il ya beaucoup d'options pour cela.
html5lib
ne pas valider.Essayer tidylib. Vous pouvez obtenir quelques très de base des liaisons dans le cadre de la elementtidy module (construit elementtrees à partir de documents HTML). http://effbot.org/downloads/#elementtidy
De l'analyse du journal devrait vous donner presque tout ce dont vous avez besoin.
Je pense que HTML tidy faire ce que vous souhaitez. Il y a un binding Python pour elle.
Dans mon cas, le python W3C/HTML validation des paquets n'ont pas de travail
pip search w3c
(à compter de septembre 2016).J'ai résolu ce problème avec
Plus de documentation ici python demandes, Le Validateur du W3C API
C'est très basique, le validateur html basé sur lxml de HTMLParser. Il ne nécessite pas de connexion internet.
Noter que ce ne sera pas vérifier les balises de fermeture, ainsi, par exemple, la commande suivante va passer:
Cependant, suivant la coutume: