Python

Analyser du HTML à l'aide de Python

Analyser du HTML à l'aide de Python
L'analyse HTML est l'une des tâches les plus courantes effectuées aujourd'hui pour collecter des informations sur les sites Web et les exploiter à diverses fins, comme établir la performance des prix d'un produit au fil du temps, les critiques d'un livre sur un site Web et bien plus encore. Il existe de nombreuses bibliothèques comme BeautifulSoup en Python qui éliminent tant de points douloureux dans l'analyse HTML, mais il vaut la peine de savoir comment ces bibliothèques fonctionnent réellement sous cette couche d'abstraction.

Dans cette leçon, c'est ce que nous avons l'intention de faire. Nous découvrirons comment les valeurs de différentes balises HTML peuvent être extraites et également remplacer la fonctionnalité par défaut de ce module pour ajouter une logique de notre propre. Nous allons le faire en utilisant le Analyseur HTML classe en Python dans html.analyseur module. Voyons le code en action.

Regarder la classe HTMLParser

Pour analyser du texte HTML en Python, nous pouvons utiliser Analyseur HTML classe dans html.analyseur module. Regardons la définition de classe pour le Analyseur HTML classer:

classe html.analyseur.HTMLParser(*, convert_charrefs=True)

le convertir_charrefs champ, s'il est défini sur True, toutes les références de caractères seront converties en leurs équivalents Unicode. Seulement le scénario/style les éléments ne sont pas convertis. Maintenant, nous allons essayer de comprendre chaque fonction pour cette classe ainsi pour mieux comprendre ce que fait chaque fonction.

Sous-classer la classe HTMLParser

Dans cette section, nous allons sous-classer la classe HTMLParser et examinerons certaines des fonctions appelées lorsque les données HTML sont transmises à l'instance de classe. Écrivons un script simple qui fait tout cela :

du html.analyseur syntaxique importation HTMLParser
classe LinuxHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
print("Balise de début rencontrée :", balise)
def handle_endtag(self, tag):
print("Balise de fin rencontrée :", balise)
def handle_data(self, data):
print("Données trouvées :", données)
analyseur = LinuxHTMLParser()
analyseur.alimentation("
'

module d'analyse HTML Python


')

Voici ce que nous obtenons avec cette commande :

Sous-classe Python HTMLParser

Fonctions HTMLParser

Dans cette section, nous allons travailler avec diverses fonctions de la classe HTMLParser et examiner les fonctionnalités de chacune d'entre elles :

du html.analyseur syntaxique importation HTMLParser
du html.les entités importent name2codepoint
classe LinuxHint_Parse (HTMLParser) :
def handle_starttag(self, tag, attrs):
print("Balise de début :", balise)
pour attr dans attrs :
print(" attr:", attr)
def handle_endtag(self, tag):
print("Balise de fin :", balise)
def handle_data(self, data):
print("Données :", données)
def handle_comment(self, data):
print("Commentaire :", data)
def handle_entityref(self, name):
c = chr(nom2point de code[nom])
print("Ent nommé :", c)
def handle_charref(self, name):
si nom.commence par('x'):
c = chr(int(nom[1:], 16))
autre:
c = chr(int(nom))
print("Num ent :", c)
def handle_decl(self, data):
print("Decl :", data)
analyseur = LinuxHint_Parse()

Avec divers appels, alimentons cette instance en données HTML séparées et voyons quelle sortie ces appels génèrent. Nous allons commencer par un simple DOCTYPE chaîne:

analyseur.alimentation(''"http://www.w3.org/TR/html4/strict.dtd">')

Voici ce que nous obtenons avec cet appel :

DOCTYPE Chaîne

Essayons maintenant une balise d'image et voyons quelles données elle extrait :

analyseur.alimentation('Le logo Python')

Voici ce que nous obtenons avec cet appel :

Balise d'image HTMLParser

Essayons ensuite comment la balise de script se comporte avec les fonctions Python :

analyseur.alimentation('')
analyseur.alimentation('')
analyseur.feed('#python couleur : vert ')

Voici ce que nous obtenons avec cet appel :

Balise de script dans l'analyseur html

Enfin, nous transmettons également des commentaires à la section HTMLParser :

analyseur.alimentation(''
'')

Voici ce que nous obtenons avec cet appel :

Commentaires d'analyse

Conclusion

Dans cette leçon, nous avons vu comment nous pouvons analyser HTML à l'aide de la propre classe HTMLParser de Python sans aucune autre bibliothèque. Nous pouvons facilement modifier le code pour changer la source des données HTML en un client HTTP.

Lisez plus de messages basés sur Python ici.

Comment booster les FPS sous Linux?
FPS signifie Images par seconde. La tâche du FPS est de mesurer la fréquence d'images dans les lectures vidéo ou les performances de jeu. En termes si...
Meilleurs jeux de laboratoire d'applications Oculus
Si vous êtes propriétaire d'un casque Oculus, vous devez être au courant du chargement latéral. Le chargement latéral est le processus d'installation ...
Top 10 des jeux à jouer sur Ubuntu
La plate-forme Windows a été l'une des plates-formes dominantes pour les jeux en raison du pourcentage énorme de jeux qui se développent aujourd'hui p...