WebAnalyst (M2), année 2018
#Cours 1: Naviguer sur internet sans navigateur.
####Remarque. Il faut avoir un terminal sous Linux avec un accès à Internet, c’est obligatoire pour ce cours. Liste des commades usuelle du terminal. On va également réaliser des scriptes en python. Si vous n’êtes pas à l’aise avec ce langage je vous suggère très fortement de suivre ce cours.
Pour rendre un fichier python executable il faut ajouter au début du
fichier:
#!/usr/bin/python3
et faire
chmod u+x nom_du_fichier
####Objectif. Manipulation de curl, wget en ligne de commande et urrlib dans un scripte Python.
- Vérifier que curl, wget et python3 sont installés.
- wget est un programme, curl est une librairie multi-plateforme qui est utilisable en PHP, R, C++, JAVA et de nombreux autres langages. En python une librairie dédiée la remplace: urllib (ou urllib2 pour python2.7 et avant).
- Première étape trouver et parcourir brièvement la documentation
- Prendre l’habitude de trouver soit même la documentation est très important pour la suite.
Introduction
Utiliser curl et wget pour accéder à http://perdu.com et stocker le résultat dans un fichier
perdu.curl.html
etperdu.wget.html
pour comparer les résultat.Utiliser la console python et
urllib
pour récupérer le résultat dans une variable.
- Encore une fois, regarder la documentation systématiquement pour comprendre comment utiliser la librairie.
####Remarque. Les trois méthodes semblent identiques mais n’offres pas les mêmes perspectives:
curl peut être utilisé en pipeline et dans de nombreux langages sans gros sur-coût d’apprentissages.
wget télécharge le fichier cible (et à une option -r très intéressante).
urllib3 permet d’utiliser la puissance de script de python immédiatement. La manipulation de ces outils nécessitent une petite connaissance du protocole HTTP qu’on verra (peut-être) par la suite.
Réaliser un petit robot qui parcours une page internet.
- On va construire un petit script en python qui récupère une page web et en extrait les liens automatiquement.
#! /usr/bin/python3
import urllib.request
import sys
def aggregateur_de_liens(url):
chaine = urllib.request.urlopen(url).read().decode("utf-8")
return [x.split('"')[1] for x in chaine.split("href=")[1:]]
print("\n".join(aggregateur_de_liens(sys.argv[1])))
Le module urllib.request permet d’utiliser la commande urlopen qui prend en argument une adresse et retourne un objet se comportant comme un fichier en python. Le contenu de cet objet peut être récupérer gràce à la méthode read. On obtient alors le contenu sous forme binaires qui peut être décoder en données textuelles grâce à la commande decode(“utf-8”). Le choix de l’encodage du text est libre, mais Python3 utilisant nativement de l’utf-8, c’est le choix ici le plus simple.
Enfin les liens sont récupérés en localisant le mot clef href= et à l’aide de la commande split.
Afin de pouvoir réaliser un script indépendant (que vous pouvez télécharger ici), On ajoute une gestion des arguments à l’aide de la commande argv du module sys.
Enfin, on utilise également la méthode join afin d’afficher les données de manière légérement lisible.
Le résultat de la commande
./robot.py http://www.lemonde.fr > lemonde.fr.url
donne
le fichier lemonde.fr.url.
Compiled the: mer. 08 janv. 2025 11:51:36 CET