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 les fonctionnalités par défaut de ce module pour ajouter une logique. Nous ferons cela en utilisant le Htmlparser classe en python dans html.analyseur module. Voyons le code en action.
En regardant la classe htmlparser
Pour analyser le texte HTML en Python, nous pouvons utiliser Htmlparser classe html.analyseur module. Regardons la dfinition de classe pour le Htmlparser classe:
classe HTML.analyseur.Htmlparser (*, convert_charrefs = true)
Le convert_charrefs Le champ, si défini sur True, fera que toutes les références de caractère converties en leurs équivalents Unicode. Seulement le script / style Les éléments ne sont pas convertis. Maintenant, nous allons essayer de comprendre chaque fonction pour cette classe également pour mieux comprendre ce que fait chaque fonction.
def handle_startendtag (self, tag, attrs):
soi.handle_starttag (tag, attrs)
soi.handle_endtag (tag)
def handle_starttag (self, tag, attrs):
passer
def handle_endtag (self, tag):
passer
def handle_charref (self, nom):
passer
def handle_entityRef (self, nom):
passer
def handle_data (self, data):
passer
def handle_comment (self, data):
passer
def handle_pi (self, data):
passer
def handle_decl (self ,cc):
passer
Sous-classe la classe htmlparser
Dans cette section, nous allons sous-classe la classe HTMLParser et jetterons un coup d'œil à certaines des fonctions appelées lorsque les données HTML seront transmises à l'instance de classe. Écrivons un script simple qui fait tout cela:
de HTML.Parser Import htmlparser
classe LinuxhtmlParser (htmlparser):
def handle_starttag (self, tag, attrs):
print ("start tag rencontré:", balise)
def handle_endtag (self, tag):
print ("Tag de fin rencontré:", balise)
def handle_data (self, data):
Imprimer ("Données trouvées:", données)
parser = LinuxhtmlParser ()
analyseur.alimentation("
'Module d'analyse HTML Python
')
Voici ce que nous récupérons avec cette commande:
Python htmlparser sous-classe
Fonctions HTMLParser
Dans cette section, nous travaillerons avec diverses fonctions de la classe HTMLParser et examinerons les fonctionnalités de chacun de ces éléments:
de HTML.Parser Import htmlparser
de HTML.entités Import Name2CodePoint
classe Linuxhint_parse (htmlparser):
def handle_starttag (self, tag, attrs):
print ("start tag:", balise)
pour att dans les attrs:
print ("att:", att)
def handle_endtag (self, tag):
imprimer ("Tag de fin:", balise)
def handle_data (self, data):
Imprimer ("Données:", données)
def handle_comment (self, data):
imprimer ("Commentaire:", données)
def handle_entityRef (self, nom):
c = chr (name2codepoint [name])
Print ("nommé ent:", c)
def handle_charref (self, nom):
Si le nom.startSwith ('x'):
c = chr (int (nom [1:], 16))
autre:
c = chr (int (name))
imprimer ("Num ent:", c)
def handle_decl (self, data):
imprimer ("Dec:", données)
parser = linuxhint_parse ()
Avec divers appels, fournissons des données HTML séparées à cette instance et voyons à quelle sortie ces appels génèrent. Nous commencerons par un simple Doctype chaîne:
analyseur.alimentation(' ')
Voici ce que nous récupérons avec cet appel:
Chaîne doctype
Essayons maintenant une balise d'image et voyons quelles données il extrait:
analyseur.alimentation('')
Voici ce que nous récupérons avec cet appel:
Tag d'image htmlparser
Ensuite, essayons comment la balise de script se comporte avec les fonctions Python:
analyseur.alimentation(''
'alerte("Linuxhint Python"); ')
analyseur.Feed ('# python couleur: vert')
analyseur.Feed ('# python couleur: vert')
Voici ce que nous récupérons avec cet appel:
Bag de script dans htmlparser
Enfin, nous transmettons également des commentaires à la section htmlparser:
analyseur.alimentation(''
«CONTENU SPÉCIFIQUE»)
Voici ce que nous récupérons avec cet appel:
Commentaires d'analyse
Conclusion
Dans cette leçon, nous avons examiné comment nous pouvons analyser HTML à l'aide de la classe HTMLParser Python propre sans aucune autre bibliothèque. Nous pouvons facilement modifier le code pour modifier la source des données HTML en un client HTTP.
Lire la suite de messages basés sur Python ici.