J'essaie de télécharger une image massive, et la plupart des URL sont vierges et de type erreur.

Lorsque j'exécute le script, il télécharge l'image mais lorsqu'il voit un mauvais type d'URL, le script stope. Je le veux pour que le script ne s'arrête pas quand il voit une mauvaise URL ou une URL vide, donc c'est ignorer la mauvaise URL et passer à l'URL suivante.

Voici l'exemple d'URL et de code incorrects:

import wget

urls = ['https://www.1000-annonces.com/appartement-a-louer-a-cote-hotel-solazur-IMGH1552740173_img20190316wa00061.jpg',
       'https://www.1000-annonces.com/proche-ouarzazate-vends-kasbah-maison-d-hotes-IMGH1376736359_piscine__chauffee.jpg',
       'badurl.jpeeg'
       'https://www.1000-annonces.com/bel-appartement-en-bord-de-mer-IMGH1541404860_img20180826wa0065.jpg',
       'https://www.1000-annonces.com/appartement-a-louer-a-cote-hotel-solazur-IMGH1552740173_img20190316wa00061.jpg',
       ]

for url in urls:
    wget.download(url)

Vous pouvez suggérer de nettoyer les URL ou de supprimer les erreurs, mais je ne veux pas le faire. C'est parce que mon script trouvera l'url puis demandera le téléchargement, aucun moyen de nettoyer l'url pour supprimer la mauvaise URL.

0
user11149657 16 mars 2019 à 18:06

2 réponses

Meilleure réponse

Vous souhaitez utiliser un bloc try et except comme ci-dessous. Cela va essayer de télécharger l'image à partir de vos URL et si ce n'est pas possible, alors cela continuera comme si de rien n'était.

import wget
import urllib

urls = ['https://www.1000-annonces.com/appartement-a-louer-a-cote-hotel-solazur-IMGH1552740173_img20190316wa00061.jpg',
       'https://www.1000-annonces.com/proche-ouarzazate-vends-kasbah-maison-d-hotes-IMGH1376736359_piscine__chauffee.jpg',
       'badurl.jpeeg'
       'https://www.1000-annonces.com/bel-appartement-en-bord-de-mer-IMGH1541404860_img20180826wa0065.jpg',
       'https://www.1000-annonces.com/appartement-a-louer-a-cote-hotel-solazur-IMGH1552740173_img20190316wa00061.jpg',
       ]

for url in urls:
    try:
        wget.download(url)
    except urllib.error.URLError:
        continue
0
Jack Moody 16 mars 2019 à 15:11

La gestion des exceptions est ce que vous recherchez. Utilisez les blocs try et except. Le flux de contrôle va comme ceci, chaque fois qu'une exception est levée dans le bloc try, le contrôle va immédiatement au bloc except. La modification de votre code serait donc

import wget
import urllib

urls = ['https://www.1000-annonces.com/appartement-a-louer-a-cote-hotel-solazur-IMGH1552740173_img20190316wa00061.jpg',
       'https://www.1000-annonces.com/proche-ouarzazate-vends-kasbah-maison-d-hotes-IMGH1376736359_piscine__chauffee.jpg',
       'badurl.jpeeg'
       'https://www.1000-annonces.com/bel-appartement-en-bord-de-mer-IMGH1541404860_img20180826wa0065.jpg',
       'https://www.1000-annonces.com/appartement-a-louer-a-cote-hotel-solazur-IMGH1552740173_img20190316wa00061.jpg',
       ]

for url in urls:
    try:
        wget.download(url)
    except urllib.error.URLError:
        pass // exception handling code goes here
0
random_user 16 mars 2019 à 15:23