17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Exercices corrigés<br />

CHAPITRE 11<br />

HTMLParser, qui ne sont compatibles qu’avec le XHTML strict, c’est-à-dire qui ne<br />

supportent pas qu’une balise ne soit pas correctement fermée.<br />

Le principe du parseur est de parcourir le contenu et de provoquer un appel à des<br />

méthodes de la classe à chaque fois qu’une balise est rencontrée.<br />

PageParser surcharge ces méthodes et alimente en interne une liste qui contient le contenu<br />

de la page. Elle fournit en outre un point d’entrée on attribute_visited, pour<br />

qu’une classe extérieure (un visiteur), puisse modifier à la volée un attribut d’un tag.<br />

La classe PageWeb joue ce rôle de visiteur et gère les échanges avec le serveur, en téléchargeant<br />

à la volée les différentes composantes qui affichent une page, comme les<br />

images et les feuilles de style.<br />

Un petit cache interne évitent de télécharger le même fichier plusieurs fois, et un<br />

sous-dossier est créé pour contenir ces éléments.<br />

Extension<br />

La première extension qui vient à l’esprit est de créer un aspirateur récursif, en suivant<br />

les liens de la page.<br />

Une autre extension intéressante consiste à utiliser ce genre d’outil pour filtrer le contenu<br />

des fichiers, puisque le parseur nous permet de parcourir facilement les tags. Un<br />

serveur proxy peut par exemple utiliser cet outil pour remplacer toutes les URL vers<br />

des sites non autorisés par un lien vers une page interne d’avertissement.<br />

Exercice 13 : récupération d’un résumé des nouveaux e-mails reçus<br />

Description<br />

L’objectif de l’exercice 13 est de fournir un utilitaire capable de se connecter à un serveur<br />

IMAP pour récupérer la liste des nouveaux e-mails reçus et afficher le sujet et<br />

l’auteur des 5 derniers e-mails non lus.<br />

Points abordés<br />

imaplib.<br />

Solution<br />

Les 5 derniers e-mails<br />

#!/usr/bin/python<br />

# -*- coding: ISO-8859-15 -*from<br />

optparse import OptionParser<br />

379

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!