TP n°2 : Scraping et API Web§
À la fin du TD précédent, nous avons vu comment nous pouvions écrire des programmes qui interrogent les serveurs Web. Nous allons continuer à explorer cette voie, en interrogeant le serveur UniProt.
À la fin du TD précédent, nous avons vu comment nous pouvions écrire des programmes qui interrogent les serveurs Web. Nous allons continuer à explorer cette voie, en interrogeant le serveur UniProt.
Indice
Le scraping est la pratique qui consiste, pour un programme, à extraire des informations pertinentes à partir du contenu HTML d'une page Web.
Pour ceci, nous allons recourir:
Écrivez un programme qui prend en paramètre un identifiant de séquence UniParc
(exemple UPI000000001F
), et affiche la liste des organismes concernés,
avec pour chacune le nombre d'entrées actives (i.e. non obsolètes).
Exemple :
$ python tp2.py UPI000000001F
4 Vaccinia virus (strain Western Reserve) (VACV) (Vaccinia virus (strain WR))
2 Vaccinia virus (strain Copenhagen) (VACV)
3 Vaccinia virus (strain Ankara) (VACV)
2 Vaccinia virus (strain Tian Tan) (VACV)
23 Vaccinia virus
2 Vaccinia virus WAU86/88-1
1 BAC cloning vector pLC16m8.8S-BAC
1 synthetic construct
Pour cela, votre programme chargera la page HTML décrivant cette séquence (dans notre exemple https://www.uniprot.org/uniparc/UPI000000001F). Utilisez l'inspecteur HTML de votre navigateur pour étudier la structure du HTML, et en déduire comment extraire l'information pertinente avec Beautiful Soup.
Avertissement
Vous pouvez constater que l'extraction d'information à partir de pages HTML est une tâche compliquée et peu fiable. D'autant que, si la mise en page du site vient à changer, il est probable qu'un programme comme celui que vous venez d'écrire ne fonctionne plus.
Pour faciliter l'utilisation de leurs informations par des programmes, de nombreux site fournissent, en plus des pages HTML, des données structurées plus adaptées pour un traitement automatique. On parle alors d'API Web.
Les données d'UniProt sont accessibles à travers plusieurs API Web. Celle que nous allons utiliser est décrite ici. Elle consiste simplement à ajouter une extension à l'URL d'un élément, pour obtenir les informations dans le format correspondant.
Nous allons utiliser l'extension .tab
,
qui fournit les données du tableau central dans le format TSV (Tab-Separated Values).
Dans ce format,
"\n"
, et"\t"
).Pour exploiter ce format, vous pourrez utiliser la méthode split
,
qui permet de découper une chaîne selon n'importe quel caractère :
>>> txt = "bonjour le monde"
>>> txt.split(' ')
['bonjour', 'le', 'monde']
>>> txt.split('o')
['b', 'nj', 'ur le m', 'nde']
Écrivez une nouvelle version du programme précédent, en utilisant le format TSV plutôt que le format HTML.