Python TD 4

Python et le web

Exercice 1

Écrire un script qui prend comme paramètre une url et télécharge dans le répertoire courant toutes les images contenues dans la page.

On utilisera urllib.request pour récupérer le code html, une classe dérivée de html.parser pour récupérer les attributs src de toutes les balises img, et le module urllib.parse pour construire l'url de téléchargement de chaque image.

Comme des images provenant de sites différents peuvent avoir le même nom, on utilisera le module time pour préfixer au nom du fichier la date et l'heure du téléchargement. Le résultat pourra ressembler à ceci :

$ dlimgs http://www-igm.univ-mlv.fr/~jyt/
$ ls -l
-rw-r--r-- 1 jyt adm    130 janv.  5 16:10 2014-01-05_16-10-14_barre.gif
-rw-r--r-- 1 jyt adm   1587 janv.  5 16:10 2014-01-05_16-10-14_iuf.gif
-rw-r--r-- 1 jyt adm   2344 janv.  5 16:10 2014-01-05_16-10-14_logoCNRS.jpg
-rw-r--r-- 1 jyt adm   4153 janv.  5 16:10 2014-01-05_16-10-14_logoigm.gif
-rw-r--r-- 1 jyt adm    553 janv.  5 16:10 2014-01-05_16-10-14_mail.gif
-rw-r--r-- 1 jyt adm  13462 janv.  5 16:10 2014-01-05_16-10-14_thibon.gif
-rw-r--r-- 1 jyt adm   4554 janv.  5 16:10 2014-01-05_16-10-14_titre-petit.jpg
-rw-r--r-- 1 jyt adm   3196 janv.  5 16:10 2014-01-05_16-10-15_scholar_sm.gif

On pourra ensuite ajouter des options ad libitum, par exemple un répertoire de téléchargement, un préfixe autre que la date et l'heure, etc.

Exercice 2

Lorsque les services web ont été introduits, il existait quelque part en Suède un serveur permettant aux développeurs de tester leurs clients (pour le protocole SOAP). Il renvoyait des injures aléatoires puisées dans le répertoire du capitaine Haddock (en anglais). Cette institution ayant disparu, nous avons installé (provisoirement) un service similaire sur le serveur de l'IGM, http://monge.univ-mlv.fr:8888.

Pour n'utiliser que les ressources natives de Python, nous avons employé le protocole xmlrpc (qui est l'ancêtre de SOAP) de sorte que l'accès au serveur ne nécéssitera que deux ou trois lignes de Python, l'une d'entre elles consistant à importer une classe du module xmlrp.client.

0) Parcourir rapidement la documentation du module xmlrpc.client.

1) Le serveur accepte l'introspection. Découvrir ses méthodes, et les essayer.

2) En utilisant le module xmlrpc.server, écrire un serveur identique et le tester sur "localhost".

La documentation est ici pour le client, et pour le serveur.

Exercice 3

Installer le module Flask (si ce n'est pas déjà fait). Pour installer un module sans être root: pip3 install flask --user. La commande flask sera dans $HOME/.local/bin.

Parcourir rapidement la documentation, et écrire un serveur d'injures similaire à celui-ci.

Attention ! Les serveurs ne fonctionneront que pendant la durée du TD !

In [ ]: