You are here: Sommaire > Plongez au coeur de Python > Traitement du HTML > Présentation de sgmllib.py | << >> | ||||
Plongez au coeur de PythonDe débutant à expert |
Le traitement du HTML est divisé en trois étapes : diviser le HTML en éléments, modifier les éléments et reconstruire le HTML à partir des éléments. La première étape est réalisée par sgmllib.py, qui fait partie de la bibliothèque standard de Python.
La clé de la compréhension de ce chapitre est de réaliser que le HTML n’est pas seulement du texte, c’est du texte structuré. La structure est dérivée de la séquence plus ou moins hiérarchique de balises de début et de fin. Habituellement, on ne travaille pas de cette manière sur du HTML, on travaille textuellement dans un éditeur de texte ou visuellement dans un navigateur ou un éditeur de pages web. sgmllib.py présente le HTML de manière structurelle.
sgmllib.py contient une classe principale : SGMLParser. SGMLParser analyse le HTML et le décompose en éléments utiles, comme des balises de début et de fin. Dès qu’il parvient à extraire des données un élément utile, il appelle une de ses propres méthodes en fonction de l’élément trouvé. Pour utiliser l’analyseur, on dérive une classe de SGMLParser et on redéfinit ces méthodes. C’est ce que j’entendais par présentation du HTML de manière structurelle : la structure du code HTML détermine la séquence d’appels de méthodes et les arguments passés à chaque méthode.
SGMLParser décompose le HTML en 8 sortes de données et appelle une méthode différente pour chacune d’entre elles :
Python 2.0 avait un bogue qui empêchait SGMLParser de reconnaître les déclarations (handle_decl n’était jamais appelé), ce qui veut dire que les DOCTYPEs étaient ignorés silencieusement. Ce bogue est corrigé dans Python 2.1. |
sgmllib.py est accompagné d'une suite de tests pour illustrer cela. Si on exécute sgmllib.py en lui passant le nom d’un fichier HTML en argument de ligne de commande, il affichera les balises et les autres éléments au fur et à mesure qu’il analyse le fichier. Il fait cela en dérivant une classe de SGMLParser et en définissant des méthodes comme unknown_starttag, unknown_endtag, handle_data et autres qui ne font qu’afficher leur argument.
Dans l’IDE ActivePython sous Windows, vous pouvez spécifier des arguments de ligne de commande dans la boîte de dialogue «Run script». Séparez les différents arguments par des espaces. |
Voici un extrait de la table des matières de la version HTML de ce livre. Bien sûr, les chemins peuvent être différents. Si vous n'avez pas téléchargé la version HTML du livre, vous pouvez le faire à l'adresse suivante : https://book.diveintopython.org/.
c:\python23\lib> type "c:\downloads\diveintopython\html\toc\index.html"
<!DOCTYPE html
PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Dive Into Python</title>
<link rel="stylesheet" href="diveintopython.css" type="text/css">
... nous coupons la suite pour rester bref ...
En l’utilisant avec la suite de tests de sgmllib.py, on obtient la sortie suivante :
c:\python23\lib> python sgmllib.py "c:\downloads\diveintopython\html\toc\index.html" data: '\n\n' start tag: <html lang="en" > data: '\n ' start tag: <head> data: '\n ' start tag: <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" > data: '\n \n ' start tag: <title> data: 'Dive Into Python' end tag: </title> data: '\n ' start tag: <link rel="stylesheet" href="diveintopython.css" type="text/css" > data: '\n ' ... nous coupons la suite pour rester bref ...
Voici le plan du reste de ce chapitre :
En cours de route, vous apprendrez également locals, globals et le formatage de chaînes à l'aide de dictionnaire.
<< Traitement du HTML |
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
Extraction de données de documents HTML >> |