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 :

Gestion des erreurs dans un script [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2015
    Messages : 4
    Par défaut Gestion des erreurs dans un script
    Bonjour à tous,

    Je vous demande de l'aide SVP pour trouver une solution à mon petit problème qui est le suivant :

    - J'ai crée un petit scirpt qui me permet de récupérer des données depuis une URL : http://www.monsite.com/articles/details?id=1 le résultat renvoyé par le serveur est tout simplement un fichier json.
    - Dans mon script j'ai remplacé le ?id= par une variable pour récupérer les articles entre 1 et 50.
    - Là ou ça bloque c'est que certaines pages sont vide, par exemple l'id=22, affiche une page blanche sur le serveur, du coup mon script plante car il attend une réponse sous format json.
    - Ma question est la suivante : comment je peux rajouter une exception dans le script pour dire si ça bloque alors je teste id +1 (page suivante)
    Voici mon script :

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    import json
    import urllib.request
    import sqlite3     
     
     
    min_article_id = 1
    max_article_id = 50
     
    while (min_article_id < max_article_id):
     
        myurl = "http://www.monsite.com/articles/details?id="+str(min_article_id)
     
        print(min_article_id) #juste pour récupérer le numéro de la page qui bloque
     
        response = urllib.request.urlopen(myurl)
        content = response.read()
        data = json.loads(content.decode("utf8"))       #<===================== C'est la où ça bloque si page vide
     
     
        id_article = data["id_articles"]
        article_editeur = data["editeur"]
        article_texte = data["texte"]
        article_date = data["date"]
     
     
     
    #SQL : Les informations collectées seront enregistrées dans une base de données Sqllite 
     
        connex = sqlite3.connect("articles.sq3")
        cur = connex.cursor()
        try:
            req ="CREATE TABLE list_articles( Id INTEGER, editeur TEXT, texte TEXT, date TEXT)"
            cur.execute(req)
     
        except:
            pass
     
        req ="INSERT INTO list_articles (Id, editeur, texte, date) VALUES(?, ?, ?, ?)"
        cur.execute(req,(id_article, article_editeur, article_texte, article_date))
     
        connex.commit()
        time.sleep(9)
        min_article_id += 1

    Merci pour votre aide.

  2. #2
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2013
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 485
    Par défaut
    Que vaux "content" quand la page est non disponible?
    vide?

    Alors, est-ce que tu ne peux pas faire de la variable "content" avant de la parser en json:
    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
     
    ....
    while (min_article_id < max_article_id):
     
        myurl = "http://www.monsite.com/articles/details?id="+str(min_article_id)
     
        print(min_article_id) #juste pour récupérer le numéro de la page qui bloque
     
        response = urllib.request.urlopen(myurl)
        content = response.read()
        if content!='':
            data = json.loads(content.decode("utf8"))
            id_article = data["id_articles"]
            article_editeur = data["editeur"]
            article_texte = data["texte"]
            article_date = data["date"]
    .....
    ou sinon, tu peux aussi le gérer par exception:
    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
     
    ....
    while (min_article_id < max_article_id):
     
        myurl = "http://www.monsite.com/articles/details?id="+str(min_article_id)
     
        print(min_article_id) #juste pour récupérer le numéro de la page qui bloque
     
        response = urllib.request.urlopen(myurl)
        content = response.read()
        try:
            data = json.loads(content.decode("utf8"))
            id_article = data["id_articles"]
            article_editeur = data["editeur"]
            article_texte = data["texte"]
            article_date = data["date"]
    .....
        except:
            print("Bad article #%d" % min_article_id)

  3. #3
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2015
    Messages : 4
    Par défaut
    Merci Laurent d'avoir pris le temps pour me réponde.
    J'ai rajouté un print(content) dans la page blanche, la résultat est : b' ' et si la page n'est pas vide : b' {"id_articles":"12"................}'

    Citation Envoyé par Laurent 1973 Voir le message
    Que vaux "content" quand la page est non disponible?
    vide?

    Alors, est-ce que tu ne peux pas faire de la variable "content" avant de la parser en json:
    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
     
    ....
    while (min_article_id < max_article_id):
     
        myurl = "http://www.monsite.com/articles/details?id="+str(min_article_id)
     
        print(min_article_id) #juste pour récupérer le numéro de la page qui bloque
     
        response = urllib.request.urlopen(myurl)
        content = response.read()
        if content!='':
            data = json.loads(content.decode("utf8"))
            id_article = data["id_articles"]
            article_editeur = data["editeur"]
            article_texte = data["texte"]
            article_date = data["date"]
    .....
    ou sinon, tu peux aussi le gérer par exception:
    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
     
    ....
    while (min_article_id < max_article_id):
     
        myurl = "http://www.monsite.com/articles/details?id="+str(min_article_id)
     
        print(min_article_id) #juste pour récupérer le numéro de la page qui bloque
     
        response = urllib.request.urlopen(myurl)
        content = response.read()
        try:
            data = json.loads(content.decode("utf8"))
            id_article = data["id_articles"]
            article_editeur = data["editeur"]
            article_texte = data["texte"]
            article_date = data["date"]
    .....
        except:
            print("Bad article #%d" % min_article_id)

  4. #4
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2015
    Messages : 4
    Par défaut
    Est ce qu'il y a une solution pour passer à la page suivante automatiquement et continuer le script si le résultat du content de la page x n'est pas bon, en gros si page x provoque problème alors on passer à la page x+1

    Merci pour ton aide.

  5. #5
    Membre émérite
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Septembre 2013
    Messages
    485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2013
    Messages : 485
    Par défaut
    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Bon, visiblement, tu n'es pas fort en programmation Python.
    Je t'invite donc à potasser un petit peu ce langage.
    Pour cela, je t'invite à lire le tutoriel: http://python.developpez.com/cours/apprendre-python3/

    Pour info: remplace mes "..." par ce qui va bien dans ton code, et tu as déjà la réponse à ta question.

  6. #6
    Candidat au Club
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Avril 2015
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2015
    Messages : 4
    Par défaut [Résolu]
    Citation Envoyé par Laurent 1973 Voir le message
    Bon, visiblement, tu n'es pas fort en programmation Python.
    Je t'invite donc à potasser un petit peu ce langage.
    Pour cela, je t'invite à lire le tutoriel: http://python.developpez.com/cours/apprendre-python3/

    Pour info: remplace mes "..." par ce qui va bien dans ton code, et tu as déjà la réponse à ta question.
    Merci pour ta réponse, tout est dit dans la citation

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [OL-2010] Gestion des erreurs dans un script VBA
    Par sebastian37 dans le forum Outlook
    Réponses: 1
    Dernier message: 08/07/2011, 20h31
  2. Gestion des erreurs dans une classe
    Par gregb34 dans le forum ASP.NET
    Réponses: 10
    Dernier message: 26/07/2007, 09h59
  3. [AIX] Gestion des erreurs dans un script
    Par f-k-z dans le forum AIX
    Réponses: 2
    Dernier message: 17/07/2007, 08h45
  4. Gestion des erreurs dans un TRIGGER
    Par SDU64 dans le forum DB2
    Réponses: 1
    Dernier message: 18/05/2006, 09h51
  5. [VB6] Gestion des erreurs dans une dll
    Par zimba-tm dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 02/08/2004, 11h20

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