CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : Enregistrer une image et changer de page en boucle

DébutPage précedente
12
Page suivanteFin
Exacompta Exacompta
MP
Niveau 10
23 mars 2017 à 22:21:06

Bonjour tout le monde,

Mon problème est que je dois télécharger des photos (dans leur taille originelle) sur un site d'album en masse et qui switcherait de page après avoir téléchargé l'image ( ce site http://emilia-clarke.net/gallery/thumbnails.php?album=397)

Le but serait que j'ai un programme, script etc qui soit capable de télécharger les dites image de manière fiable et automatique quand je suis placé dans l'album.

D'un point de vue technique je ne PENSE pas que ça soit difficilement réalisable.

Sauf que là petit bémol : je ne sais quasiment pas programmer :hap:
J'ai fait un peu de python (les bases des bases) mais n'ayant aucun but précis ca ne m'a pas vraiment branché.

Donc j'aurai voulu savoir si vous connaitiriez des petits scripts, outils "programmables" qui pourraient m'aider dans ma requête ?

Et à la limite, en dernier recours, quelles seraient les librairies Python les plus adaptées à mon cas ? :hap:

Merci d'avance :noel:

MrGreez94 MrGreez94
MP
Niveau 10
24 mars 2017 à 16:39:27

J'ai fait un programme Python du genre pour télécharger des scans de mangas disponibles uniquement en lecture en ligne.
Toute la difficulté se résume à ta capacité à trouver l'url direct de l'image et être capable de faire la liste de l'url de toutes les images que tu veux télécharger.

Sur ton site ça n'a pas l'air d'être bien compliqué.
Les images semblent suivre le pattern :

 http://emilia-clarke.net/gallery/albums/Appearances/2015/06-24/outside/0624_siriusxm_outside_0001.JPG 

je n'ai pas bien investigué mais globalement la seule chose amenée à varier d'une image à l'autre semble être le numéro de la photo XXXX.JPG. A toi de trouver le nombre d'images qu'il y a.

Une fois que t'as la liste des URLs, un coup de urlretrieve() de la lib urllib2 (me semble t-il) et c'est tout cuit

Ebara Ebara
MP
Niveau 12
24 mars 2017 à 16:57:03

Renseigne toi sur le webscraping en python. C'est pas très difficile ;)

Exacompta Exacompta
MP
Niveau 10
24 mars 2017 à 18:09:36

A première vue pour un novice ayant fait des très peu de programmation vous pensez que c'est accessible ? :hap:

MrGreez94 MrGreez94
MP
Niveau 10
24 mars 2017 à 22:00:48

Oui, c'est même très formateur je pense :)

Exacompta Exacompta
MP
Niveau 10
24 mars 2017 à 22:02:13

D'accord merci de votre aide, j'essaierai de m'y intéresser un peu plus dès que j'aurai le temps :noel:

Exacompta Exacompta
MP
Niveau 10
18 mai 2017 à 10:34:01

Salut me revoilà :) Bon ayant les bases de la prog' en python j'ai fait ça à la va vite avec ce que j'ai trouvé sur google :bave:
Donc voici le code :


from urllib.request import urlretrieve
import os

number = 1
url = "http://emilia-clarke.net/gallery/albums/Appearances/2016/05%2025%20Me%20Before%20You%20Premiere%20in%20London/0525_MBYLondonPremiere_000"
while (number < 153):
    new_filename = str(number) + ".jpg"
    if(os.path.isfile(str(number)+".jpg") == False and os.path.isfile(str(number)+".JPG") == False):
        try:
            urlretrieve(url+str(number)+".JPG", new_filename)
        except:
            urlretrieve(url+str(number)+".jpg", new_filename)
        print("image number " + str(number) + " was downloaded")
    else:
        print("image number " + str(number) + " is already downloaded")
    if(number == 9):
        url = url[:-1]
    elif(number == 99):
        url = url[:-1]
    elif(number == 999):
        url = url[:-1]
    number = number + 1
print ("All images downloaded")

Sur pastebin : https://pastebin.com/HmRSzzPn

Je sais pertinnement qu'il peut être améliorer mais je ne sais pas trop où, si vous avez des idées dites le moi :noel:
Ce qui me gêne c'est surtout au niveau de l'URL si par exemple elle n'a pas besoin d'être modifié car pas de zéro à enlever, je crois que c'est tout :noel:

Merci de m'avoir aidé en tout cas :hap:

Exacompta Exacompta
MP
Niveau 10
18 mai 2017 à 10:41:49

Et aussi quand je suis arrivé à la ligne 443 j'ai eu ce code d'erreur :


Traceback (most recent call last):
  File "C:\Users\Congres\Desktop\download_system\download.py", line 14, in <module>
    urlretrieve(url+str(number)+".JPG", new_filename)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 248, in urlretrieve
    with contextlib.closing(urlopen(url, data)) as fp:
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 223, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 532, in open
    response = meth(req, response)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 642, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 570, in error
    return self._call_chain(*args)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 504, in _call_chain
    result = func(*args)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 650, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 404: Not Found

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Congres\Desktop\download_system\download.py", line 16, in <module>
    urlretrieve(url+str(number)+".jpg", new_filename)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 248, in urlretrieve
    with contextlib.closing(urlopen(url, data)) as fp:
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 223, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 526, in open
    response = self._open(req, data)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 544, in _open
    '_open', req)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 504, in _call_chain
    result = func(*args)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 1346, in http_open
    return self.do_open(http.client.HTTPConnection, req)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 1321, in do_open
    r = h.getresponse()
  File "C:\Program Files (x86)\Python36-32\lib\http\client.py", line 1331, in getresponse
    response.begin()
  File "C:\Program Files (x86)\Python36-32\lib\http\client.py", line 297, in begin
    version, status, reason = self._read_status()
  File "C:\Program Files (x86)\Python36-32\lib\http\client.py", line 258, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "C:\Program Files (x86)\Python36-32\lib\socket.py", line 586, in readinto
    return self._sock.recv_into(b)
ConnectionResetError: [WinError 10054] Une connexion existante a dû être fermée par l’hôte distant

Et après reflexion il faudrait que je trouve un moyen de verifier si l'image a été correctement téléchargée [[sticker:p/1kky]]

MrGreez94 MrGreez94
MP
Niveau 10
18 mai 2017 à 20:24:39

Vu les questions que tu te poses, il est temps de commencer à factoriser un peu tout ça en fonction déjà ce sera plus facile pour toi de l'adapter et pour nous plus facile de t'aider.

Pour les 0 et ton url, je te conseille de prendre le problème dans l'autre sens : Plutôt que de prendre le cas de figure ou il y a plus de 0 et en enlever je te conseille de construire le nombre en utilisant la fonction zfill()

Un exemple très simple pour illustrer son utilité:

  '1'.zfill(5) ->  '00001'
 '12'.zfill(5) ->  '00012'
'453'.zfill(5) ->  '00453'

Concernant ton erreur il semblerait que la requête n'aboutisse pas pour un url donné, je peux pas t'en dire plus, à toi de foutre des print partout pour voir quel url casse tout :ok:

Exacompta Exacompta
MP
Niveau 10
18 mai 2017 à 20:30:29

Le 18 mai 2017 à 20:24:39 MrGreez94 a écrit :
Vu les questions que tu te poses, il est temps de commencer à factoriser un peu tout ça en fonction déjà ce sera plus facile pour toi de l'adapter et pour nous plus facile de t'aider.

Comment ça ? :noel:

Pour les 0 et ton url, je te conseille de prendre le problème dans l'autre sens : Plutôt que de prendre le cas de figure ou il y a plus de 0 et en enlever je te conseille de construire le nombre en utilisant la fonction zfill()

Un exemple très simple pour illustrer son utilité:

  '1'.zfill(5) ->  '00001'
 '12'.zfill(5) ->  '00012'
'453'.zfill(5) ->  '00453'

Merci beaucoup, c'est pas bête du tout :noel:

Concernant ton erreur il semblerait que la requête n'aboutisse pas pour un url donné, je peux pas t'en dire plus, à toi de foutre des print partout pour voir quel url casse tout :ok:

Par rapport à ça après reflexion je pense que ca vient du serveur qui me bloque la connexion car des fois ca intervient à la page 50 et d'autres fois à la page 158 par exemple. Du coup pour "contourner" ce problème j'ai utilisé un try et except pour réessayer de télécharger l'image si ca n'a pas fonctionné :hap:

MrGreez94 MrGreez94
MP
Niveau 10
18 mai 2017 à 20:44:34

Le 18 mai 2017 à 20:30:29 Exacompta a écrit :

Le 18 mai 2017 à 20:24:39 MrGreez94 a écrit :
Vu les questions que tu te poses, il est temps de commencer à factoriser un peu tout ça en fonction déjà ce sera plus facile pour toi de l'adapter et pour nous plus facile de t'aider.

Comment ça ? :noel:

Pour les 0 et ton url, je te conseille de prendre le problème dans l'autre sens : Plutôt que de prendre le cas de figure ou il y a plus de 0 et en enlever je te conseille de construire le nombre en utilisant la fonction zfill()

Un exemple très simple pour illustrer son utilité:

  '1'.zfill(5) ->  '00001'
 '12'.zfill(5) ->  '00012'
'453'.zfill(5) ->  '00453'

Merci beaucoup, c'est pas bête du tout :noel:

Concernant ton erreur il semblerait que la requête n'aboutisse pas pour un url donné, je peux pas t'en dire plus, à toi de foutre des print partout pour voir quel url casse tout :ok:

Par rapport à ça après reflexion je pense que ca vient du serveur qui me bloque la connexion car des fois ca intervient à la page 50 et d'autres fois à la page 158 par exemple. Du coup pour "contourner" ce problème j'ai utilisé un try et except pour réessayer de télécharger l'image si ca n'a pas fonctionné :hap:

Etant donné que ton objectif c'est de monter en compétences (si j'ai bien compris), un programme bien fait est un programme lisible par quelqu'un qui n'a aucune idée de ce que tu cherches à faire.

Concrètement ton programme ne devrait être que des appels de fonctions avec un nom explicite, correspondant chacune à une et unique tâche.
La dans ton programme tu sens bien qu'il y a plein de chose qui sont faites, notamment:
- la génération du nom de l'image
- la génération de l'url associé à une image
- la vérification si l'image existe ou pas
- le téléchargement de l'image

Dans l'idée ton programme devrait s'approcher d'un truc comme ça

Pour i allant de 1 à 153:
  Je génère le nom de l'image
  Si l'image n'existe pas encore:
    je génère l'url associé à l'image
    je télécharge l'image

Avec pour chaque ligne (à quelques détails près) une fonction qui fait le taff

EDIT: Par pitié, quand tu connais la borne supérieure de ta boucle, utilise un for :hap:

Message édité le 18 mai 2017 à 20:46:16 par MrGreez94
ouimaisquoi ouimaisquoi
MP
Niveau 8
18 mai 2017 à 21:25:15

Le 18 mai 2017 à 10:41:49 Exacompta a écrit :
Et aussi quand je suis arrivé à la ligne 443 j'ai eu ce code d'erreur :


Traceback (most recent call last):
  File "C:\Users\Congres\Desktop\download_system\download.py", line 14, in <module>
    urlretrieve(url+str(number)+".JPG", new_filename)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 248, in urlretrieve
    with contextlib.closing(urlopen(url, data)) as fp:
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 223, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 532, in open
    response = meth(req, response)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 642, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 570, in error
    return self._call_chain(*args)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 504, in _call_chain
    result = func(*args)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 650, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 404: Not Found

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Congres\Desktop\download_system\download.py", line 16, in <module>
    urlretrieve(url+str(number)+".jpg", new_filename)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 248, in urlretrieve
    with contextlib.closing(urlopen(url, data)) as fp:
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 223, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 526, in open
    response = self._open(req, data)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 544, in _open
    '_open', req)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 504, in _call_chain
    result = func(*args)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 1346, in http_open
    return self.do_open(http.client.HTTPConnection, req)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 1321, in do_open
    r = h.getresponse()
  File "C:\Program Files (x86)\Python36-32\lib\http\client.py", line 1331, in getresponse
    response.begin()
  File "C:\Program Files (x86)\Python36-32\lib\http\client.py", line 297, in begin
    version, status, reason = self._read_status()
  File "C:\Program Files (x86)\Python36-32\lib\http\client.py", line 258, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "C:\Program Files (x86)\Python36-32\lib\socket.py", line 586, in readinto
    return self._sock.recv_into(b)
ConnectionResetError: [WinError 10054] Une connexion existante a dû être fermée par l’hôte distant

Et après reflexion il faudrait que je trouve un moyen de verifier si l'image a été correctement téléchargée [[sticker:p/1kky]]

Vu l'erreur, je conseillerais "HTTrack" (un asiprateur gratuit)
Tu règle pour ne pomper que les images (.jpg; .bmp;...ext)
Note: A utiliser avec parcimonie et modération (connexions par seconde)

Exacompta Exacompta
MP
Niveau 10
18 mai 2017 à 21:35:32

Le 18 mai 2017 à 20:44:34 MrGreez94 a écrit :

Le 18 mai 2017 à 20:30:29 Exacompta a écrit :

Le 18 mai 2017 à 20:24:39 MrGreez94 a écrit :
Vu les questions que tu te poses, il est temps de commencer à factoriser un peu tout ça en fonction déjà ce sera plus facile pour toi de l'adapter et pour nous plus facile de t'aider.

Comment ça ? :noel:

Pour les 0 et ton url, je te conseille de prendre le problème dans l'autre sens : Plutôt que de prendre le cas de figure ou il y a plus de 0 et en enlever je te conseille de construire le nombre en utilisant la fonction zfill()

Un exemple très simple pour illustrer son utilité:

  '1'.zfill(5) ->  '00001'
 '12'.zfill(5) ->  '00012'
'453'.zfill(5) ->  '00453'

Merci beaucoup, c'est pas bête du tout :noel:

Concernant ton erreur il semblerait que la requête n'aboutisse pas pour un url donné, je peux pas t'en dire plus, à toi de foutre des print partout pour voir quel url casse tout :ok:

Par rapport à ça après reflexion je pense que ca vient du serveur qui me bloque la connexion car des fois ca intervient à la page 50 et d'autres fois à la page 158 par exemple. Du coup pour "contourner" ce problème j'ai utilisé un try et except pour réessayer de télécharger l'image si ca n'a pas fonctionné :hap:

Etant donné que ton objectif c'est de monter en compétences (si j'ai bien compris), un programme bien fait est un programme lisible par quelqu'un qui n'a aucune idée de ce que tu cherches à faire.

Concrètement ton programme ne devrait être que des appels de fonctions avec un nom explicite, correspondant chacune à une et unique tâche.
La dans ton programme tu sens bien qu'il y a plein de chose qui sont faites, notamment:
- la génération du nom de l'image
- la génération de l'url associé à une image
- la vérification si l'image existe ou pas
- le téléchargement de l'image

Dans l'idée ton programme devrait s'approcher d'un truc comme ça

Pour i allant de 1 à 153:
  Je génère le nom de l'image
  Si l'image n'existe pas encore:
    je génère l'url associé à l'image
    je télécharge l'image

Avec pour chaque ligne (à quelques détails près) une fonction qui fait le taff

EDIT: Par pitié, quand tu connais la borne supérieure de ta boucle, utilise un for :hap:

J'ai pas trop compris comment utiliser le For à vrai dire :hap: En C++ j'y ai touché mais c'est tout :hap:
Et pour l'histoire de fonction à chaque ligne c'est pas un peu abusé ? J'suis nouveau donc je sais pas mais ca me semble abusé :hap:
Ah et aussi la plupart des informations que je recupère, ma méthode de recup' est pas moisie' ? :hap:

Le 18 mai 2017 à 21:25:15 ouimaisquoi a écrit :

Le 18 mai 2017 à 10:41:49 Exacompta a écrit :
Et aussi quand je suis arrivé à la ligne 443 j'ai eu ce code d'erreur :


Traceback (most recent call last):
  File "C:\Users\Congres\Desktop\download_system\download.py", line 14, in <module>
    urlretrieve(url+str(number)+".JPG", new_filename)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 248, in urlretrieve
    with contextlib.closing(urlopen(url, data)) as fp:
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 223, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 532, in open
    response = meth(req, response)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 642, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 570, in error
    return self._call_chain(*args)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 504, in _call_chain
    result = func(*args)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 650, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 404: Not Found

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Congres\Desktop\download_system\download.py", line 16, in <module>
    urlretrieve(url+str(number)+".jpg", new_filename)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 248, in urlretrieve
    with contextlib.closing(urlopen(url, data)) as fp:
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 223, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 526, in open
    response = self._open(req, data)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 544, in _open
    '_open', req)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 504, in _call_chain
    result = func(*args)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 1346, in http_open
    return self.do_open(http.client.HTTPConnection, req)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 1321, in do_open
    r = h.getresponse()
  File "C:\Program Files (x86)\Python36-32\lib\http\client.py", line 1331, in getresponse
    response.begin()
  File "C:\Program Files (x86)\Python36-32\lib\http\client.py", line 297, in begin
    version, status, reason = self._read_status()
  File "C:\Program Files (x86)\Python36-32\lib\http\client.py", line 258, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "C:\Program Files (x86)\Python36-32\lib\socket.py", line 586, in readinto
    return self._sock.recv_into(b)
ConnectionResetError: [WinError 10054] Une connexion existante a dû être fermée par l’hôte distant

Et après reflexion il faudrait que je trouve un moyen de verifier si l'image a été correctement téléchargée [[sticker:p/1kky]]

Vu l'erreur, je conseillerais "HTTrack" (un asiprateur gratuit)
Tu règle pour ne pomper que les images (.jpg; .bmp;...ext)
Note: A utiliser avec parcimonie et modération (connexions par seconde)

Je connais pas, je pourrai me renseigner dessus :noel: Mais je pense que ca vient du fait que je sollicite trop le site hein :hap: Et pour le pompage des images j'ai pas vraiment besoin de fonctionner comme ça étant donné que j'ai juste à incrémenter une variable pour les photos :hap:

MrGreez94 MrGreez94
MP
Niveau 10
18 mai 2017 à 21:46:25

Le 18 mai 2017 à 21:35:32 Exacompta a écrit :

Le 18 mai 2017 à 20:44:34 MrGreez94 a écrit :

Le 18 mai 2017 à 20:30:29 Exacompta a écrit :

Le 18 mai 2017 à 20:24:39 MrGreez94 a écrit :
Vu les questions que tu te poses, il est temps de commencer à factoriser un peu tout ça en fonction déjà ce sera plus facile pour toi de l'adapter et pour nous plus facile de t'aider.

Comment ça ? :noel:

Pour les 0 et ton url, je te conseille de prendre le problème dans l'autre sens : Plutôt que de prendre le cas de figure ou il y a plus de 0 et en enlever je te conseille de construire le nombre en utilisant la fonction zfill()

Un exemple très simple pour illustrer son utilité:

  '1'.zfill(5) ->  '00001'
 '12'.zfill(5) ->  '00012'
'453'.zfill(5) ->  '00453'

Merci beaucoup, c'est pas bête du tout :noel:

Concernant ton erreur il semblerait que la requête n'aboutisse pas pour un url donné, je peux pas t'en dire plus, à toi de foutre des print partout pour voir quel url casse tout :ok:

Par rapport à ça après reflexion je pense que ca vient du serveur qui me bloque la connexion car des fois ca intervient à la page 50 et d'autres fois à la page 158 par exemple. Du coup pour "contourner" ce problème j'ai utilisé un try et except pour réessayer de télécharger l'image si ca n'a pas fonctionné :hap:

Etant donné que ton objectif c'est de monter en compétences (si j'ai bien compris), un programme bien fait est un programme lisible par quelqu'un qui n'a aucune idée de ce que tu cherches à faire.

Concrètement ton programme ne devrait être que des appels de fonctions avec un nom explicite, correspondant chacune à une et unique tâche.
La dans ton programme tu sens bien qu'il y a plein de chose qui sont faites, notamment:
- la génération du nom de l'image
- la génération de l'url associé à une image
- la vérification si l'image existe ou pas
- le téléchargement de l'image

Dans l'idée ton programme devrait s'approcher d'un truc comme ça

Pour i allant de 1 à 153:
  Je génère le nom de l'image
  Si l'image n'existe pas encore:
    je génère l'url associé à l'image
    je télécharge l'image

Avec pour chaque ligne (à quelques détails près) une fonction qui fait le taff

EDIT: Par pitié, quand tu connais la borne supérieure de ta boucle, utilise un for :hap:

J'ai pas trop compris comment utiliser le For à vrai dire :hap: En C++ j'y ai touché mais c'est tout :hap:
Et pour l'histoire de fonction à chaque ligne c'est pas un peu abusé ? J'suis nouveau donc je sais pas mais ca me semble abusé :hap:
Ah et aussi la plupart des informations que je recupère, ma méthode de recup' est pas moisie' ? :hap:

Le 18 mai 2017 à 21:25:15 ouimaisquoi a écrit :

Le 18 mai 2017 à 10:41:49 Exacompta a écrit :
Et aussi quand je suis arrivé à la ligne 443 j'ai eu ce code d'erreur :


Traceback (most recent call last):
  File "C:\Users\Congres\Desktop\download_system\download.py", line 14, in <module>
    urlretrieve(url+str(number)+".JPG", new_filename)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 248, in urlretrieve
    with contextlib.closing(urlopen(url, data)) as fp:
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 223, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 532, in open
    response = meth(req, response)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 642, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 570, in error
    return self._call_chain(*args)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 504, in _call_chain
    result = func(*args)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 650, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 404: Not Found

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Congres\Desktop\download_system\download.py", line 16, in <module>
    urlretrieve(url+str(number)+".jpg", new_filename)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 248, in urlretrieve
    with contextlib.closing(urlopen(url, data)) as fp:
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 223, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 526, in open
    response = self._open(req, data)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 544, in _open
    '_open', req)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 504, in _call_chain
    result = func(*args)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 1346, in http_open
    return self.do_open(http.client.HTTPConnection, req)
  File "C:\Program Files (x86)\Python36-32\lib\urllib\request.py", line 1321, in do_open
    r = h.getresponse()
  File "C:\Program Files (x86)\Python36-32\lib\http\client.py", line 1331, in getresponse
    response.begin()
  File "C:\Program Files (x86)\Python36-32\lib\http\client.py", line 297, in begin
    version, status, reason = self._read_status()
  File "C:\Program Files (x86)\Python36-32\lib\http\client.py", line 258, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "C:\Program Files (x86)\Python36-32\lib\socket.py", line 586, in readinto
    return self._sock.recv_into(b)
ConnectionResetError: [WinError 10054] Une connexion existante a dû être fermée par l’hôte distant

Et après reflexion il faudrait que je trouve un moyen de verifier si l'image a été correctement téléchargée [[sticker:p/1kky]]

Vu l'erreur, je conseillerais "HTTrack" (un asiprateur gratuit)
Tu règle pour ne pomper que les images (.jpg; .bmp;...ext)
Note: A utiliser avec parcimonie et modération (connexions par seconde)

Je connais pas, je pourrai me renseigner dessus :noel: Mais je pense que ca vient du fait que je sollicite trop le site hein :hap: Et pour le pompage des images j'ai pas vraiment besoin de fonctionner comme ça étant donné que j'ai juste à incrémenter une variable pour les photos :hap:

Le for c'est la traduction de la ligne

Pour i allant de 1 à 153

La ou avec le while tu dois écrire

i=1
while i < 153:
    i = i + 1 
    print(i)

Avec le for ça donne

for i in range(1,153):
    print(i)

en gros ce que ça fait c'est que range(1,153) ou range(153) génère une liste de nombre allant de 1 à 152
range(1,153) = [1, 2, 3, 4, 5, 6, 7, 8, ..., 150, 151, 152]

Et i va prendre la valeur de chacun des éléments de la liste.

Pour l'histoire des fonctions c'est comme tu veux, c'était juste une idée si tu voulais approfondir un peu :hap:

Exacompta Exacompta
MP
Niveau 10
18 mai 2017 à 22:05:41

Bha ca me gêne mais pour en revenir au transfert des informations c'est correct d'utiliser les get et autre ? alors que cette fonction n'est pas vraiment lié avec l'interface graphique ?

Exacompta Exacompta
MP
Niveau 10
18 mai 2017 à 22:08:05

Et bien sûr j'essaie de vraiment comprendre le For dès demain :noel:

MrGreez94 MrGreez94
MP
Niveau 10
18 mai 2017 à 22:09:37

Le 18 mai 2017 à 22:05:41 Exacompta a écrit :
Bha ca me gêne mais pour en revenir au transfert des informations c'est correct d'utiliser les get et autre ? alors que cette fonction n'est pas vraiment lié avec l'interface graphique ?

Qu'entends tu pars là, j'ai pas compris [[sticker:p/1lmk]]

Le 18 mai 2017 à 22:08:05 Exacompta a écrit :
Et bien sûr j'essaie de vraiment comprendre le For dès demain :noel:

:ok:

Exacompta Exacompta
MP
Niveau 10
18 mai 2017 à 22:13:15

Bha j'utilise les get inclus dans tkinter directement dans cette fonction qui permet de download les images, y'a pas un autre moyen plus correct de les transmettre ? Si tu comprends pas je pourrai pas faire mieux j'ai pas nécessairement le vocabulaire adapté :hap:

MrGreez94 MrGreez94
MP
Niveau 10
18 mai 2017 à 22:18:30

Le 18 mai 2017 à 22:13:15 Exacompta a écrit :
Bha j'utilise les get inclus dans tkinter directement dans cette fonction qui permet de download les images, y'a pas un autre moyen plus correct de les transmettre ? Si tu comprends pas je pourrai pas faire mieux j'ai pas nécessairement le vocabulaire adapté :hap:

Ce que je comprends pas c'est que je vois 0 tkinter dans ton code :hap:

Exacompta Exacompta
MP
Niveau 10
18 mai 2017 à 22:27:36

Le 18 mai 2017 à 22:18:30 MrGreez94 a écrit :

Le 18 mai 2017 à 22:13:15 Exacompta a écrit :
Bha j'utilise les get inclus dans tkinter directement dans cette fonction qui permet de download les images, y'a pas un autre moyen plus correct de les transmettre ? Si tu comprends pas je pourrai pas faire mieux j'ai pas nécessairement le vocabulaire adapté :hap:

Ce que je comprends pas c'est que je vois 0 tkinter dans ton code :hap:

Ah normal comme j'ai dit dans mon premier post il n'y a pas la partie graphique :noel:

Voici le code tout entier et modifié sur Pastebin si ca t'intéresse https://pastebin.com/Qmu7mA27 :noel:

DébutPage précedente
12
Page suivanteFin
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment