Ceci est une ancienne révision du document !
A partir du serveur taper:
python3 -m http.server => accès aux fichiers du répertoire courant http://IP_serveur:8000 par défaut python3 -m http.server 8080 => pour préciser autre port python3 -m http.server --directory /home => pour changer de répertoire
https://pythonforge.com/bibliotheque-requests/
installation package python:
#pip install <nom-du-package>
Pour voir les packages déjà installés, vous pouvez écrire le code qui suit :
#pip freeze
Pour effectuer des requettes HTTP, installer le package requests:
#pip install requests #import requests
Après, pour appeler la fonction get()dans le package Requests, écrivez :
#requests.get()
Si vous voulez importer une seule fonction appelée get à partir du package Requests, écrivez ceci :
#from requests import get
#import requests #url = "https://www.gov.uk/search/news-and-communications" #page = requests.get(url) ##Voir le code html source #print(page.content)
# Récupération du titre de la page HTML
#>>soup.title #<title><Les chiens les plus mignons></title>
# Récupération de la chaîne de caractères du titre HTML
soup.title.string
“Les chiens les plus mignons”
# Trouver tous les éléments avec la balise <a>
soup.find_all('a')
[ <a href=“http://exemple.com/labradoodle” class=“race” id=“lien1”>LabraDoodle</a>, <a href=“http://exemple.com/retriever” class=“race” id=“lien2”>Golden Retriever</a>, <a href=“http://exemple.com/carlin” class=“race” id=“lien3”>Carlin</a>]
# Trouver les éléments avec l’id du « lien1 »
soup.find(id=“lien1”)
<a href=“http://exemple.com/labradoodle” class=“race” id=“lien1”>LabraDoodle</a>
#Trouver tous les éléments p avec la classe « title »
soup.find_all(“p”, class_=“title”)
“Les meilleures races de chiens”
titres = soup.find_all(“a”, class_=“gem-c-document-listitem-title”) » for title in titres: … print(title.string) “Restart of the UK in JAPAN campaign” “Joint Statement on the use of violence and repression in Belarus” “Foreign Secretary commits to more effective and accountable aid spending under new Foreign, Commonwealth and Development Office” “UK military dog to receive PDSA Dickin Medal after tackling Al Qaeda insurgents.” Pour l’exemple des informations et communications britanniques, nous allons sauvegarder tous les titres et les descriptions de la page HTML dans une liste de chaînes de caractères. Au lieu d’afficher les informations des chaînes dans le terminal comme vous venez de le faire, nous voulons sauvegarder les éléments dans une liste : titres_bs = soup.find_all(“a”, class_=“gem-c-document-listitem-title”) titres = [] for titre in titres_bs:
titres.append(titre.string)
Ici nous avons commencé avec une liste vide appelée titres. Ensuite nous avons fait une boucle pour tous les éléments dans la liste titres_bs et ajouté uniquement la chaîne des titres dans la liste « titres ». Maintenant, la liste titres contiendra une liste de chaînes de tous les titres de la page HTML.
Suivez la même approche pour extraire et sauvegarder les descriptions de la page.
descriptions_bs = soup.find_all(“p”, class_=“gem-c-document-list__item-description”) descriptions = [] for desc in descriptions_bs:
descriptions.append(desc.string)
Pour lire et écrire un fichier, vous pouvez utiliser la fonction intégrée open() , qui requiert deux paramètres : le nom du fichier et le mode. Nom du fichier : le chemin d’accès au fichier que vous voulez lire ou dans lequel vous voulez écrire. Mode : le mode que vous voulez utiliser pour le fichier. Les options principales sont :
• Lire : "r" • Écrire (écraser) : "w" • Continuer d’écrire : "a" • Lire et écrire (écraser) : "r+"
Pour créer un nouveau fichier appelé « bonjour.txt » et y écrire « Hello, world! », utilisez le code ci-dessous : fichier = open(“hello.txt”, “w”) fichier.write(“Hello, world!”) fichier.close()
Vous pouvez aussi utiliser l’instruction with pour fermer automatiquement le fichier à la fin du bloc :
with open(“hello.txt”) as fichier:
for ligne in fichier:
# faire quelque chose avec une ligne
print(ligne)
⇒ Hello, world!
Avec ce code, le fichier d’entrée va être affiché ligne par ligne. Vous avez probablement remarqué que nous n’avons pas spécifié de mode dans open() … C’est tout simplement parce que le mode d’ouverture par défaut est la lecture ou “r” !
Quand vous utilisez le package CSV, vous devez aussi utiliser la fonction open() pour ouvrir le fichier. Vous pouvez ensuite utiliser les méthodes reader() ou writer() sur le fichier pour le lire ou y écrire.
Lisez les fichiers externes Commençons avec la lecture des fichiers externes. Disons que vous avez un fichier CSV nommé couleurs_preferees.csv qui ressemble à ça : nom,metier,couleur_preferee Jacob Smith,Ingénieur en informatique,Violet Nora Scheffer,Stratégiste numérique,Bleu Emily Adams,Responsable marketing,Orange La méthode .reader() va prendre tout le texte dans un CSV, le parser ligne par ligne et convertir chaque ligne dans une liste de chaînes. Vous pouvez utiliser différents délimiteurs pour décider de la manière de séparer chaque colonne, mais le séparateur le plus commun est une virgule. L’extrait de code ci-dessous lit le fichier CSV et affiche chaque ligne.
importcsv
With open('couleurs_preferees.csv') as fichier_csv:
Reader = csv.reader(fichier_csv, delimiter=',')
For ligne in reader:
print(ligne)
Le résultat sera comme ceci :
['nom', 'metier', 'couleur_preferee'] ['Jacob Smith', 'Ingénieur en informatique', 'Violet'] ['Nora Scheffer', 'Stratégiste numérique', 'Bleu'] ['Emily Adams', 'Responsable marketing', 'Orange']
Bien que cette approche peut être utile parfois, la ligne d’en-tête est considérée comme la même que les autres. Une méthode plus utile pour lire les fichiers CSV, tout en reconnaissant les en-têtes pour identifier les colonnes, est la méthode DictReader() . Cette méthode sait que la première ligne est un en-tête et sauvegarde les autres lignes en tant que dictionnaires. Chaque clé est un nom de colonne et la valeur est la valeur de la colonne. Le code ci-dessous montre comment utiliser la méthode DictReader().
importcsv
With open('couleurs_preferees.csv') as fichier_csv:
Reader = csv.DictReader(fichier_csv, delimiter=',')
For ligne in reader:
print(ligne['nom'] + " travaille en tant que " + ligne['metier'] + " et sa couleur préférée est" + ligne['couleur_preferee'])
Le résultat affichera :
JacobSmithtravailleentantqueIngénieureninformatiqueetsacouleurpréféréeestViolet NoraScheffertravailleentantqueStratégistenumériqueetsacouleurpréféréeestBleu EmilyAdamstravailleentantqueResponsablemarketingetsacouleurpréféréeestOrange
Bien plus utile n’est-ce pas ? Écrivez dans des fichiers externes Pour comprendre comment écrire dans des fichiers externes, revenons sur notre exemple d’extraction de données web. Nous avons déjà écrit le code pour extraire et transformer les données du site d’informations et services du gouvernement britannique. Nous avons sauvegardé tous les titres et descriptions dans des listes de chaînes de caractères. Maintenant nous pouvons utiliser les fonctions .writer()et .writerow() pour écrire les données dans le fichier CSV.
# Créer une liste pour les en-têtes en_tete = [“titre”, “description”]
# Créer un nouveau fichier pour écrire dans le fichier appelé « data.csv » With open('data.csv', 'w' ) as fichier_csv:
# Créer un objet writer (écriture) avec ce fichier
Writer = csv.writer(fichier_csv, delimiter=',')
writer.writerow(en_tete)
# Parcourir les titres et descriptions - zip permet d'itérer sur deux listes ou plus à la fois
For titre, description in zip(titres, descriptions):
# Créer une nouvelle ligne avec le titre et la description à ce moment de la boucle
ligne = [titre, description]
writer.writerow(ligne)
Et voilà ! Votre fichier s’est rempli de données extraites du web. Regardez la capture vidéo ci-dessous pour parcourir chaque ligne.