PDA

Visualizza la versione completa : [PYTHON] Errore in apertura di URL


gianiaz
25-06-2007, 16:39
Traceback (most recent call last):
File "spider.py", line 213, in <module>

File "spider.py", line 39, in parse
f = opener.open(url);
File "/usr/lib/python2.5/urllib2.py", line 374, in open
response = self._open(req, data)
File "/usr/lib/python2.5/urllib2.py", line 392, in _open
'_open', req)
File "/usr/lib/python2.5/urllib2.py", line 353, in _call_chain
result = func(*args)
File "/usr/lib/python2.5/urllib2.py", line 1101, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "/usr/lib/python2.5/urllib2.py", line 1074, in do_open
r = h.getresponse()
File "/usr/lib/python2.5/httplib.py", line 924, in getresponse
response.begin()
File "/usr/lib/python2.5/httplib.py", line 385, in begin
version, status, reason = self._read_status()
File "/usr/lib/python2.5/httplib.py", line 349, in _read_status
raise BadStatusLine(line)
httplib.BadStatusLine


In pratica alla linea 213, chiamo il metodo di una classe che apre un url tramite la libreria urllib2, usando un proxy per connettersi.

Il programmino cicla una serie di links, e li parsa, credo che il problema sorga da una risposta anomala, ma non so come intercettare l'errore per gestirlo..

Se servono altri particolari chiedetemi e ve li fornirņ, grazie

ciao

billiejoex
26-06-2007, 00:29
Se servono altri particolari chiedetemi e ve li fornirņ, grazie
Serve il codice. :stordita:

gianiaz
26-06-2007, 00:31
sono riuscito gestendo l'errore in questo modo:



request = urllib2.Request(url);
request.add_header('User-Agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv \u2014 1.7.
50511')
proxy_support = urllib2.ProxyHandler(proxies);
opener = urllib2.build_opener(proxy_support)
urllib2.install_opener(opener)
content = "";
try :
content = opener.open(request).read()
except urllib2.HTTPError, why:
print url
print why
except urllib2.URLError, why:
#Doesn't work in all cases
#url_failure(url, why.__getitem__(0)[1])
print url
print why
except httplib.BadStatusLine, why:
print url
print why



grazie lo stesso :)

Loading