Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| python [2022/06/16 17:35] – créée huracan | python [2023/04/03 09:46] (Version actuelle) – [Transfert de fichier à partir d'un serveur en http] huracan | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | ====== PYTHON ====== | + | ======= PYTHON ======= |
| + | |||
| + | |||
| + | |||
| + | ---- | ||
| + | |||
| + | ==== Transfert de fichier à partir d'un serveur en http ==== | ||
| + | |||
| + | A partir du serveur taper: | ||
| + | |||
| + | user@serveur: | ||
| + | |||
| + | user@serveur: | ||
| + | |||
| + | user@serveur: | ||
| -------------------------- | -------------------------- | ||
| + | |||
| + | ===== SCRAPING ===== | ||
| + | |||
| + | |||
| + | [[https:// | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | |||
| + | installation package python: | ||
| + | |||
| + | #pip install < | ||
| + | |||
| + | 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 : | ||
| + | |||
| + | # | ||
| + | |||
| + | Si vous voulez importer une seule fonction appelée get à partir du package Requests, écrivez ceci : | ||
| + | |||
| + | #from requests import get | ||
| + | |||
| + | #import requests | ||
| + | #url = " | ||
| + | #page = requests.get(url) | ||
| + | ##Voir le code html source | ||
| + | # | ||
| + | |||
| + | |||
| + | |||
| + | # Récupération du titre de la page HTML | ||
| + | |||
| + | #>> | ||
| + | #< | ||
| + | |||
| + | # 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> | ||
| + | >> | ||
| + | [ <a href=" | ||
| + | <a href=" | ||
| + | <a href=" | ||
| + | |||
| + | # Trouver les éléments avec l’id du « lien1 » | ||
| + | >> soup.find(id=" | ||
| + | <a href=" | ||
| + | |||
| + | #Trouver tous les éléments p avec la classe « title » | ||
| + | >> soup.find_all(" | ||
| + | "Les meilleures races de chiens" | ||
| + | |||
| + | |||
| + | titres = soup.find_all(" | ||
| + | |||
| + | >> for title in titres: | ||
| + | ... print(title.string) | ||
| + | |||
| + | " | ||
| + | "Joint Statement on the use of violence and repression in Belarus" | ||
| + | " | ||
| + | "UK military dog to receive PDSA Dickin Medal after tackling Al Qaeda insurgents." | ||
| + | |||
| + | |||
| + | Pour l’exemple des informations et communications britanniques, | ||
| + | |||
| + | titres_bs = soup.find_all(" | ||
| + | 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(" | ||
| + | descriptions = [] | ||
| + | for desc in descriptions_bs: | ||
| + | descriptions.append(desc.string) | ||
| + | |||
| + | ---------------------------------------------------------------- | ||
| + | |||
| + | Pour lire et écrire un fichier, vous pouvez utiliser la fonction intégrée | ||
| + | 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 : " | ||
| + | • Écrire (écraser) : " | ||
| + | • Continuer d’écrire : " | ||
| + | • Lire et écrire (écraser) : " | ||
| + | Pour créer un nouveau fichier appelé « bonjour.txt » et y écrire « Hello, world! », utilisez le code ci-dessous : | ||
| + | fichier = open(" | ||
| + | fichier.write(" | ||
| + | fichier.close() | ||
| + | |||
| + | Vous pouvez aussi utiliser l’instruction | ||
| + | |||
| + | with open(" | ||
| + | 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() | ||
| + | |||
| + | |||
| + | ---------------------------------------------------------------------------------- | ||
| + | |||
| + | Quand vous utilisez le package CSV, vous devez aussi utiliser la fonction | ||
| + | |||
| + | 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, | ||
| + | Jacob Smith, | ||
| + | Nora Scheffer, | ||
| + | Emily Adams, | ||
| + | La méthode | ||
| + | |||
| + | importcsv | ||
| + | |||
| + | With open(' | ||
| + | Reader = csv.reader(fichier_csv, | ||
| + | For ligne in reader: | ||
| + | print(ligne) | ||
| + | |||
| + | Le résultat sera comme ceci : | ||
| + | |||
| + | [' | ||
| + | [' | ||
| + | ['Nora Scheffer', | ||
| + | [' | ||
| + | |||
| + | 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() | ||
| + | Le code ci-dessous montre comment utiliser la méthode DictReader(). | ||
| + | |||
| + | importcsv | ||
| + | |||
| + | With open(' | ||
| + | Reader = csv.DictReader(fichier_csv, | ||
| + | For ligne in reader: | ||
| + | print(ligne[' | ||
| + | |||
| + | 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 | ||
| + | |||
| + | # Créer une liste pour les en-têtes | ||
| + | en_tete = [" | ||
| + | |||
| + | # Créer un nouveau fichier pour écrire dans le fichier appelé « data.csv » | ||
| + | With open(' | ||
| + | # Créer un objet writer (écriture) avec ce fichier | ||
| + | Writer = csv.writer(fichier_csv, | ||
| + | writer.writerow(en_tete) | ||
| + | # Parcourir les titres et descriptions - zip permet d' | ||
| + | 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. | ||