Qu'est-il à dire de cette erreur ? (URL)

Qu'est-il à dire de cette erreur ? (URL) - Python - Programmation

Marsh Posté le 03-07-2010 à 08:49:08    

soit le code de mon scanner web :
 

Code :
  1. try:
  2.             response = urllib2.urlopen(req)
  3.         except (IOError), eObject:
  4.             print 'E R R E U R   D   E N T R E E   S O R T I E - Erreur [%s]' % eObject
  5.             fichier_err = 'e:\\ERREUR_ACCES.TXT'
  6.             fichier_erreur = open(fichier_err,'a')
  7.             fichier_erreur.write(ADRESSE)
  8.             fichier_erreur.write('\n')
  9.             fichier_erreur.close()
  10.         except (ValueError), eObject:
  11.             print 'E R R E U R   D E   V A L E U R - Erreur [%s]' % eObject
  12.             fichier_err = 'e:\\ERREUR_ACCES.TXT'
  13.             fichier_erreur = open(fichier_err,'a')
  14.             fichier_erreur.write(ADRESSE)
  15.             fichier_erreur.write('\n')
  16.             fichier_erreur.close()
  17.         else:


voici l'erreur que j'ai obtenue :

Code :
  1. ADRESSE EN COURS :http://www.n-europe.com
  2. Traceback (most recent call last):
  3.   File "C:\Python25\001_moteur_de_recherche sans les phrases.py", line 304, in <module>
  4.     TXTWEB = response.read()
  5.   File "C:\Python25\lib\socket.py", line 304, in read
  6.     data = self._sock.recv(rbufsize)
  7.   File "C:\Python25\lib\httplib.py", line 509, in read
  8.     return self._read_chunked(amt)
  9.   File "C:\Python25\lib\httplib.py", line 548, in _read_chunked
  10.     chunk_left = int(line, 16)
  11. ValueError: invalid literal for int() with base 16: ''


---------------
http://www.ypikay.com
Reply

Marsh Posté le 03-07-2010 à 08:49:08   

Reply

Marsh Posté le 04-07-2010 à 19:19:30    

erwan83 a écrit :

soit le code de mon scanner web :
 

Code :
  1. try:
  2.             response = urllib2.urlopen(req)
  3.         except (IOError), eObject:
  4.             print 'E R R E U R   D   E N T R E E   S O R T I E - Erreur [%s]' % eObject
  5.             fichier_err = 'e:\\ERREUR_ACCES.TXT'
  6.             fichier_erreur = open(fichier_err,'a')
  7.             fichier_erreur.write(ADRESSE)
  8.             fichier_erreur.write('\n')
  9.             fichier_erreur.close()
  10.         except (ValueError), eObject:
  11.             print 'E R R E U R   D E   V A L E U R - Erreur [%s]' % eObject
  12.             fichier_err = 'e:\\ERREUR_ACCES.TXT'
  13.             fichier_erreur = open(fichier_err,'a')
  14.             fichier_erreur.write(ADRESSE)
  15.             fichier_erreur.write('\n')
  16.             fichier_erreur.close()
  17.         else:


voici l'erreur que j'ai obtenue :

Code :
  1. ADRESSE EN COURS :http://www.n-europe.com
  2. Traceback (most recent call last):
  3.   File "C:\Python25\001_moteur_de_recherche sans les phrases.py", line 304, in <module>
  4.     TXTWEB = response.read()
  5.   File "C:\Python25\lib\socket.py", line 304, in read
  6.     data = self._sock.recv(rbufsize)
  7.   File "C:\Python25\lib\httplib.py", line 509, in read
  8.     return self._read_chunked(amt)
  9.   File "C:\Python25\lib\httplib.py", line 548, in _read_chunked
  10.     chunk_left = int(line, 16)
  11. ValueError: invalid literal for int() with base 16: ''



 
L'erreur ne s'est pas passée sur "response = urllib2.urlopen(req)" sinon l'except aurait été appelé et t'aurais eu un "E R R E U R   D E   V A L E U R".
Faut donner la ligne 304 de ton fichier "001_moteur_de_recherche sans les phrases.py" et non le bloc try/except qui, visiblement, n'a pas été impliqué...
 
Quoi qu'il en, soit, il cherche à convertir une string sensée être un nombre en base 16 (comme par exemple "1a" ) en nombre correspondant en base 10 (comme 26)
 
Accessoirement, tu peux remplacer

Code :
  1. fichier_erreur.write(ADRESSE)
  2. fichier_erreur.write('\n')


par

Code :
  1. fichier_erreur.write(ADRESSE + '\n')


ou bien

Code :
  1. fichier_erreur.write("%s\n" % ADRESSE)


Message édité par Sve@r le 04-07-2010 à 19:22:12

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 05-07-2010 à 02:23:30    

Yes... donc y a-t-il un controle à insérer ?
Bon, vu que j'ai refait le fichier (quelques interlignes pour aérer tout ce bazar) j'attendrai la reproduction de l'erreur et je te tiendrai au courant !
Merci !


---------------
http://www.ypikay.com
Reply

Marsh Posté le 05-07-2010 à 08:59:56    

Code :
  1. ADRESSE EN COURS :http://www.boutiqueonze.com
  2. Traceback (most recent call last):
  3.   File "C:\Python25\001_moteur_de_recherche sans les phrases.py", line 332, in <module>
  4.     TXTWEB = response.read()
  5.   File "C:\Python25\lib\socket.py", line 304, in read
  6.     data = self._sock.recv(rbufsize)
  7.   File "C:\Python25\lib\httplib.py", line 509, in read
  8.     return self._read_chunked(amt)
  9.   File "C:\Python25\lib\httplib.py", line 548, in _read_chunked
  10.     chunk_left = int(line, 16)
  11. ValueError: invalid literal for int() with base 16: '


et voila la ligne 332

Code :
  1. req = urllib2.Request(ADRESSE, None, headers)
  2.         try:
  3.             response = urllib2.urlopen(req)
  4.         except (IOError), eObject:
  5.             print 'E R R E U R   D   E N T R E E   S O R T I E - Erreur [%s]' % eObject
  6.         except (ValueError), eObject:
  7.             print 'E R R E U R   D E   V A L E U R - Erreur [%s]' % eObject
  8.         else:
  9.             TXTWEB=''
  10.             if response:
  11.                 TXTWEB = response.read()


---------------
http://www.ypikay.com
Reply

Marsh Posté le 05-07-2010 à 09:04:51    

erwan83 a écrit :


et voila la ligne 332

Code :
  1. req = urllib2.Request(ADRESSE, None, headers)
  2.         try:
  3.             response = urllib2.urlopen(req)
  4.         except (IOError), eObject:
  5.             print 'E R R E U R   D   E N T R E E   S O R T I E - Erreur [%s]' % eObject
  6.         except (ValueError), eObject:
  7.             print 'E R R E U R   D E   V A L E U R - Erreur [%s]' % eObject
  8.         else:
  9.             TXTWEB=''
  10.             if response:
  11.                 TXTWEB = response.read()



 
Ben ça deviendra

Code :
  1. req = urllib2.Request(ADRESSE, None, headers)
  2.  
  3.        try:
  4.            response = urllib2.urlopen(req)
  5.        except (IOError), eObject:
  6.            print 'E R R E U R   D   E N T R E E   S O R T I E - Erreur [%s]' % eObject
  7.        except (ValueError), eObject:
  8.            print 'E R R E U R   D E   V A L E U R - Erreur [%s]' % eObject
  9.        # try
  10.        if response:
  11.            try:
  12.                TXTWEB = response.read()
  13.            except ValueError, eObject:
  14.                print "Erreur [%s] - %s" % (response, eObject)
  15.                TXTWEB=""
  16.           # try
  17.        # if


Message édité par Sve@r le 05-07-2010 à 09:06:12

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 05-07-2010 à 14:49:08    

Ah ben oui !
Merci beaucoup !!


---------------
http://www.ypikay.com
Reply

Marsh Posté le 06-07-2010 à 06:53:01    

Code :
  1. ADRESSE EN COURS :http://www.wiz-import.fr
  2. Traceback (most recent call last):
  3.   File "C:\Python25\001_moteur_de_recherche sans les phrases.py", line 302, in <module>
  4.     TXTWEB = response.read()
  5.   File "C:\Python25\lib\socket.py", line 304, in read
  6.     data = self._sock.recv(rbufsize)
  7.   File "C:\Python25\lib\httplib.py", line 529, in read
  8.     s = self.fp.read(amt)
  9.   File "C:\Python25\lib\socket.py", line 328, in read
  10.     data = self._sock.recv(left)
  11. error: (10054, 'Connection reset by peer')
  12. >>>


et là je mets quoi comme except ?
 
heu... mon code :

Code :
  1. else:
  2.             TXTWEB=''
  3.             if response:
  4.                 try:
  5.                     TXTWEB = response.read()#ligne de l'erreur
  6.                 except ValueError, eObject:
  7.                     print "ERREUR BOUCLE 16 BITS [%s] - %s" % (response, eObject)
  8.                     TXTWEB=""
  9.                 else:
  10.                     print 'BOUCLE 16 BIT OK'
  11.            
  12.             TXTWEB = TXTWEB.replace("\n","" ).replace("\r","" ).replace("\t","" )


en désespoir de cause j'ai mis except RuntimeError
( ref http://docs.python.org/library/exceptions.html )

Message cité 1 fois
Message édité par erwan83 le 06-07-2010 à 07:24:14

---------------
http://www.ypikay.com
Reply

Marsh Posté le 06-07-2010 à 22:21:29    

erwan83 a écrit :

Code :
  1. ADRESSE EN COURS :http://www.wiz-import.fr
  2. Traceback (most recent call last):
  3.   File "C:\Python25\001_moteur_de_recherche sans les phrases.py", line 302, in <module>
  4.     TXTWEB = response.read()
  5.   File "C:\Python25\lib\socket.py", line 304, in read
  6.     data = self._sock.recv(rbufsize)
  7.   File "C:\Python25\lib\httplib.py", line 529, in read
  8.     s = self.fp.read(amt)
  9.   File "C:\Python25\lib\socket.py", line 328, in read
  10.     data = self._sock.recv(left)
  11. error: (10054, 'Connection reset by peer')
  12. >>>


et là je mets quoi comme except ?


Hum... tu peux essayer except error. Ou bien except: sans rien derrière => ça catche toutes les exceptions
 

erwan83 a écrit :

en désespoir de cause j'ai mis except RuntimeError
( ref http://docs.python.org/library/exceptions.html )


Mouais, pourquoi pas. Si ça marche...


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 07-07-2010 à 22:46:18    

ben écoute, ça a marché, il a scanné tout mon fichier sans problème.
seul soucis je lui avais demandé dans l'exception runtimeError de m'écrire 50 fois 'RunTime Error' pour que ça me saute à la figure et évidemment, pas vu !!!!
Mais bon, là je passe quelques jous chez mes parents, dimanche je remettrai le nez dedans car j'ai 18000 pages web indexées et il va falloir que je les trie... Au pire on se voit lundi et on en parle autour d'un café


---------------
http://www.ypikay.com
Reply

Marsh Posté le 09-07-2010 à 23:45:31    

Bon, d'après ma copine qui jette un oeil de temps en temps, le moteur est à l'arret depuis 48 heures... Argggg 48000 pages que j'aurais pu indexer en plus...  
Bref, il a bouffé toute la liste que je lui avais passée sans problème aucun !
Yes !!!

Message cité 1 fois
Message édité par erwan83 le 10-07-2010 à 00:03:35

---------------
http://www.ypikay.com
Reply

Marsh Posté le 09-07-2010 à 23:45:31   

Reply

Marsh Posté le 10-07-2010 à 23:58:14    

erwan83 a écrit :

Bon, d'après ma copine qui jette un oeil de temps en temps, le moteur est à l'arret depuis 48 heures... Argggg 48000 pages que j'aurais pu indexer en plus...


J'espère que l'index est stocké dans une bdd parce que Python n'est pas fait pour ça. Dans mon projet, j'avais commencé par stocker les valeurs en mémoire. 3mn30 pour analyser et afficher un truc de 36000 valeurs.
Puis j'ai déporté le stockage dans des tables temporaires de Postgres. Résultat: 35 sec...
 


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 11-07-2010 à 12:23:45    

non non je t'expliquerai j'ai environ (actuellement) 17342 index basés sur des triplets de lettres. ensuite je lance une boucle dans mon php qui cherche l'existence d'un de ces triplets :
array a b c d ..... multiplié par trois
si il me renvoie un triplet, je prends le premier, ca signifie que dans l'index qui porte le nom du triplet je trouverai mon mot...
etc pour le mot suivant etc etc
 

Code :
  1. <?php
  2. $inputtemp = strtolower($inputtemp);
  3. $tableau1 = array(1 => 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9');
  4. $tableau2 = array(1 => 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9');
  5. $tableau3 = array(1 => 'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','0','1','2','3','4','5','6','7','8','9');
  6. $trouve = '0';
  7. foreach($tableau1 as $lettre1)
  8. {
  9. foreach($tableau2 as $lettre2)
  10.  {
  11.  foreach($tableau3 as $lettre3)
  12.   {
  13.   $ind = $lettre1.$lettre2.$lettre3;
  14.   if (stristr($inputtemp,$ind) !== FALSE)
  15.    {
  16.    $indicateur = '../../........../INDIC_'.strtoupper($ind).'.IND';
  17.    $trouve = '1';
  18.    break;
  19.    }
  20.   if ($trouve == '1'){break;}
  21.   }
  22.  if ($trouve == '1'){break;}
  23.  }
  24. if ($trouve == '1'){break;}
  25. }
  26. ?>


 
exemple de temps d'une requête :
 
http://88.163.71.238/index.php?inp [...] e=1&open=n
 
moins d'un dixième de seconde !
 
au fait :
 

Code :
  1. ERREUR BOUCLE 16 BITS [<addinfourl at 47985168 whose fp = <socket._fileobject object at 0x02DB0570>>] - invalid literal for int() with base 16: ''


YESSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS !!!


Message édité par erwan83 le 11-07-2010 à 12:26:23

---------------
http://www.ypikay.com
Reply

Marsh Posté le 11-07-2010 à 13:04:38    

donc que je cherche pantoufle ou pangloss, j'ai les mêmes résultats ?

Reply

Marsh Posté le 11-07-2010 à 18:13:21    

flo850 a écrit :

donc que je cherche pantoufle ou pangloss, j'ai les mêmes résultats ?


 
Ben oui, surtout si on cherche les pantoufles de pangloss...[:petrus jar]


---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Marsh Posté le 11-07-2010 à 18:48:02    

au passage , quand on cherche design, ça plante

Reply

Marsh Posté le 12-07-2010 à 20:55:46    

attention pas encore au point le truc
non si tu cherches pantoufles tu auras admettons l'index PAN ou encore OUF etc et il cherchera le mot exact dans cet index etc etc...


---------------
http://www.ypikay.com
Reply

Marsh Posté le 12-07-2010 à 20:56:31    

flo850 a écrit :

au passage , quand on cherche design, ça plante


 
http://88.163.71.238/index.php?inp [...] t=0&open=n
(1067 résultats)


---------------
http://www.ypikay.com
Reply

Marsh Posté le 12-07-2010 à 21:13:18    

Bon, pour revenir sur du serieux, hier j'ai été emmerdé par cette page :
http://www.culture.gouv.fr
il se trouve que l'url, quand on ouvre la page se charge en permanence, bizarre, en fait on charge à 99.99% mais on n'arrive jamais à finir le chargement.
ça m'a planté le BOT : il m'a marqué  
adresse en cours http://www.culture.gouv.fr
titre : blabla
et un quart d'heure après il était encore dessus.
 
=> comment et où mettre une sorte de compteur ?
 

Code :
  1. try:
  2.             response = urllib2.urlopen(req)
  3.         except (IOError), eObject:
  4.             print 'E R R E U R   D   E N T R E E   S O R T I E - Erreur [%s]' % eObject
  5.             fichier_err = 'e:\\ERREUR_ACCES.TXT'
  6.             fichier_erreur = open(fichier_err,'a')
  7.             fichier_erreur.write('[')
  8.             fichier_erreur.write(ADRESSE)
  9.             fichier_erreur.write(']')
  10.             fichier_erreur.write('\n')
  11.             fichier_erreur.close()
  12.         except (ValueError), eObject:
  13.             print 'E R R E U R   D E   V A L E U R - Erreur [%s]' % eObject
  14.             fichier_err = 'e:\\ERREUR_ACCES.TXT'
  15.             fichier_erreur = open(fichier_err,'a')
  16.             fichier_erreur.write('[')
  17.             fichier_erreur.write(ADRESSE)
  18.             fichier_erreur.write(']')
  19.             fichier_erreur.write('\n')
  20.             fichier_erreur.close()
  21.         else:
  22.             TXTWEB=''
  23.             if response:
  24.                 try:
  25.                     TXTWEB = response.read()
  26.                 except ValueError, eObject:
  27.                     print "ERREUR BOUCLE 16 BITS [%s] - %s" % (response, eObject)
  28.                     TXTWEB=""
  29.                 except RuntimeError, eObject:
  30.                     fichier_err = 'e:\\ERREUR_16_BITS.TXT'
  31.                     fichier_erreur = open(fichier_err,'a')
  32.                     x = "ERREUR 2 BOUCLE 16 BITS [%s] - %s" % (response, eObject)
  33.                     fichier_erreur.write(x)
  34.                     fichier_erreur.write('[')
  35.                     fichier_erreur.write(ADRESSE)
  36.                     fichier_erreur.write(']')
  37.                     fichier_erreur.write('\n')
  38.                     fichier_erreur.close()
  39.                     print "ERREUR 2 BOUCLE 16 BITS [%s] - %s" % (response, eObject)
  40.                     TXTWEB=""


 
donc c'est ValueError qui a détecté l'erreur 16 bits.
(aucune inscription dans le fichier)
 
Et pour finir, ce code d'erreur :
 

Code :
  1. TXTWEB = response.read()
  2.   File "C:\Python25\lib\socket.py", line 304, in read
  3.     data = self._sock.recv(rbufsize)
  4.   File "C:\Python25\lib\httplib.py", line 509, in read
  5.     return self._read_chunked(amt)
  6.   File "C:\Python25\lib\httplib.py", line 563, in _read_chunked
  7.     value += self._safe_read(chunk_left)
  8.   File "C:\Python25\lib\httplib.py", line 602, in _safe_read
  9.     chunk = self.fp.read(min(amt, MAXAMOUNT))
  10.   File "C:\Python25\lib\socket.py", line 328, in read
  11.     data = self._sock.recv(left)
  12. error: (10054, 'Connection reset by peer')


 
Comment gérer cette exception ?
 
Merci !!!


---------------
http://www.ypikay.com
Reply

Marsh Posté le 12-07-2010 à 22:23:44    

erwan83 a écrit :

Code :
  1. error: (10054, 'Connection reset by peer')[/#ff0000]


 
Comment gérer cette exception ?
 
Merci !!!


 
Si tu regardes bien l'arbre des exceptions, tu verras que les exceptions héritent les unes des autres.
 
Exemple: pour gérer le cas 1/0, tu peux catcher
- ZeroDivisionError
- ArithmeticError
- StandardError
- Exception
- BaseException
Car toutes ces exceptions héritent les unes des autres.
 
Donc au pire tu catche BaseException (la racine de l'arbre) et là, tu devrais tout récupérer.

Code :
  1. try:
  2.    ...
  3. except BaseException:
  4.   ...


 
Ou alors, tu mets rien après except ce qui chopera, là aussi, tout  

Code :
  1. try:
  2.    ...
  3. except:
  4.   ...



---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed