Gestion des erreurs dans un script
Bonjour à tous,
Je vous demande de l'aide SVP :roll: 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:
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.