IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

fichier csv, mauvais output dans excel


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Homme Profil pro
    Chômeur professionnel
    Inscrit en
    Novembre 2020
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chômeur professionnel

    Informations forums :
    Inscription : Novembre 2020
    Messages : 122
    Par défaut fichier csv, mauvais output dans excel
    yo les gars,

    jcomprends pas pourquoi quand j'ouvre dans excel les en tetes font une colonne et le contenu une seule colonne aussi.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    from urllib import request
    from bs4 import BeautifulSoup
    import json
    import csv
     
    page_url = 'https://alansimpson.me/python/scrape_sample.html'
    ouverture = request.urlopen(page_url)
    lecture = BeautifulSoup(ouverture, 'html5lib')
    recup_2 = lecture.article   # récupérer dans la balise article de la page web
    liste = []
    for link in recup_2.find_all('a'):
        try:
            url = link.get('href')
            img = link.img.get('src')
            text = link.span.text
            liste.append({'url' : url, 'img': img, 'text': text})
        except AttributeError:
            pass
     
    with open(r'C:\Users\Youcef\Documents\page_web.csv', 'w', newline='') as fichier_csv:
        recup_3 = csv.writer(fichier_csv)
        recup_3.writerow(['url','img','text'])
        for ligne in liste:
            recup_3.writerow([str(ligne['url']),str(ligne['img']),str(ligne['text'])])

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 738
    Par défaut
    Salut,

    Dans un fichier CSV les colonnes sont materialisées par un "delimiteur" qui doit être précisé si différent de celui "par défaut".

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre actif
    Homme Profil pro
    Chômeur professionnel
    Inscrit en
    Novembre 2020
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chômeur professionnel

    Informations forums :
    Inscription : Novembre 2020
    Messages : 122
    Par défaut
    bien joué ma biche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    with open(r'C:\Users\Youcef\Documents\page_web.csv', 'w', newline='') as fichier_csv:
        recup_3 = csv.writer(fichier_csv, delimiter = ";")
        recup_3.writerow(['url','img','text'])
        for ligne in liste:
            recup_3.writerow([str(ligne['url']),str(ligne['img']),str(ligne['text'])])

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 830
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 830
    Billets dans le blog
    1
    Par défaut
    Salut
    Citation Envoyé par Yuseph Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for link in recup_2.find_all('a'):
        try:
            url = link.get('href')
            img = link.img.get('src')
            text = link.span.text
            liste.append({'url' : url, 'img': img, 'text': text})
        except AttributeError:
            pass
    Tu commences à te démerder en Python.
    Ceci dit, je ne comprends pas trop pourquoi tu penses avoir un AttributeError mais perso je remplacerais pass par continue.
    Dans l'état ça ne change rien. Mais si demain il y avait en dessous une suite de code qui dépende de liste, ce "quelque chose" serait quand-même exécuté alors qu'avec un continue, le code n'est pas traité.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    for link in recup_2.find_all('a'):
        try:
            url = link.get('href')
            img = link.img.get('src')
            text = link.span.text
            liste.append({'url' : url, 'img': img, 'text': text})
        except AttributeError:
            continue
     
        # Cette partie ne sera pas exécutée si AttributeError...
        ... (autre chose)...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre actif
    Homme Profil pro
    Chômeur professionnel
    Inscrit en
    Novembre 2020
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Algérie

    Informations professionnelles :
    Activité : Chômeur professionnel

    Informations forums :
    Inscription : Novembre 2020
    Messages : 122
    Par défaut
    C'est l'auteur du bouquin. il dit que les navigateurs laissent passer beaucoup d'oublis de caractères et de typos (fautes de frappe). du coup on peut avoir sa boucle interrompue pour une attributeError.
    Et effectivement les fautes yen a qui passe, sur cette même page j'ai vu que la balise article était refermée par une balise aricle

Discussions similaires

  1. [XL-2007] script pour récupérer nom de fichier et le mettre dans excel
    Par demon21 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/01/2011, 20h05
  2. [CSV] Importer un fichier CSV ou OV2 dans une page PHP
    Par gpsevasion dans le forum Langage
    Réponses: 13
    Dernier message: 12/02/2009, 14h31
  3. Importer 1 Fichier CSV avec des ";" dans les champs
    Par opaillon dans le forum Import/Export
    Réponses: 3
    Dernier message: 15/01/2009, 14h23
  4. [MySQL] Lecture fichier CSV et enregistrement dans la base
    Par tifsa dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 26/09/2008, 12h49
  5. Importer un fichier csv (séparateur virgule) dans un classeur excel 2003
    Par Valérie32 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/06/2008, 21h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo