urllib2 try et except sur 404
Je suis en train de passer par une série de numérotée pages de données à l'aide de urlib2. Ce que je veux faire est d'utiliser un rapport d'essai, mais j'ai peu de connaissance de celui-ci, à en Juger par la lecture un peu, il semble être fondée sur des "noms" qui sont des exceptions, par exemple, IOError etc. Je ne sais pas quel est le code d'erreur est que je suis à la recherche, qui est une partie du problème.
J'ai écrit /collé à partir d' 'urllib2 le manuel" mon urllib2 page de l'extraction de routine ainsi:
def fetch_page(url,useragent)
urlopen = urllib2.urlopen
Request = urllib2.Request
cj = cookielib.LWPCookieJar()
txheaders = {'User-agent' : useragent}
if os.path.isfile(COOKIEFILE):
cj.load(COOKIEFILE)
print "previous cookie loaded..."
else:
print "no ospath to cookfile"
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
urllib2.install_opener(opener)
try:
req = urllib2.Request(url, useragent)
# create a request object
handle = urlopen(req)
# and open it to return a handle on the url
except IOError, e:
print 'Failed to open "%s".' % url
if hasattr(e, 'code'):
print 'We failed with error code - %s.' % e.code
elif hasattr(e, 'reason'):
print "The error object has the following 'reason' attribute :"
print e.reason
print "This usually means the server doesn't exist,",
print "is down, or we don't have an internet connection."
return False
else:
print
if cj is None:
print "We don't have a cookie library available - sorry."
print "I can't show you any cookies."
else:
print 'These are the cookies we have received so far :'
for index, cookie in enumerate(cj):
print index, ' : ', cookie
cj.save(COOKIEFILE) # save the cookies again
page = handle.read()
return (page)
def fetch_series():
useragent="Firefox...etc."
url="www.example.com/01.html"
try:
fetch_page(url,useragent)
except [something]:
print "failed to get page"
sys.exit()
Le bas la fonction est juste un exemple pour voir ce que je veux dire, quelqu'un peut me dire ce que je devrais y mettre ? J'ai fait la page de l'extraction de la fonction retourne False si elle obtient une erreur 404, est-ce correct ? Alors pourquoi ne pas l'exception Faux: le travail ? Merci pour toute aide que vous pouvez donner.
ok ainsi que par des conseils ici, j'ai essayé:
except urlib2.URLError, e:
except URLError, e:
except URLError:
except urllib2.IOError, e:
except IOError, e:
except IOError:
except urllib2.HTTPError, e:
except urllib2.HTTPError:
except HTTPError:
aucune de ces travaux.
OriginalL'auteur | 2011-11-24
Vous devez vous connecter pour publier un commentaire.
Je vous recommande de vérifier la merveilleuse
demande
module.Avec elle, vous pouvez obtenir la fonctionnalité que vous posez sur:
Je suis tellement fatigué que je n'ai pas commencer par vous remercier, donc, désolé pour ça. Merci beaucoup de prendre le temps d'aider un frère.
hey, vous êtes de droite, ce module est assez cool, et bien que urllib2 n'est pas cassé (il fonctionne pour moi en ce moment) je vois ce que tu veux dire au sujet de la simplicité. merci.
je n'avais aucune idée de ce que de superbes conseils, ce fut à l'avance, la différence est plutôt choquant.
OriginalL'auteur Acorn
Vous devez attraper
urllib2.HTTPError
si vous voulez détecter une erreur 404:De l'attraper dans fetch_series():
http://docs.python.org/library/urllib2.html:
Merci pour votre aide!
ok, je vais lui donner un aller, merci, Va être demain. creuser le nom de trop 😉
oh, je vois, je suppose que je serais d'avoir à tester la valeur de retour de la récupérer. ah vous les gars. peut votre fichier des autorisations d'être toujours dans un ordre parfait, et peut-être votre boîtes de ne jamais être 0wned par skiddz (au moins) 😀
hmmm, N'a pas l'air de fonctionner, juste allé tout droit... je vais regarder à nouveau demain, lorsque je suis moins fatigué. Encore un grand merci.
OriginalL'auteur chown
Interactive piquer:
Pour la recherche sur la nature et le contenu de ces exceptions en python préférable de simplement essayer la clé des appels de manière interactive:
Puis
sys.last_value
contient la valeur d'exception qui a chuté à la interactive, et peut être joué avec:( utilisez la touche de TABULATION + . auto-expansion du shell interactif, dir(), vars() ...)
Essayer de manutention:
La construction d'une simple ouvreur qui ne jette pas les erreurs HTTP:
Les gestionnaires par défaut de
urllib2.build_opener
:OriginalL'auteur kxr