Я пытаюсь пройти через ряд пронумерованных страниц данных, используя urlib2. То, что я хочу сделать, это использовать оператор try, но я мало знаю об этом. Судя по чтению немного, он, похоже, основан на конкретных "именах", которые являются исключениями, например, IOError и т.д. Я не знаю, что код ошибки, который я ищу, который является частью проблемы.
Я написал/вставил из "urllib2 недостающее руководство" мою процедуру загрузки страницы urllib2, таким образом:
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()
Нижняя функция - всего лишь пример, чтобы понять, что я имею в виду, может ли кто-нибудь сказать мне, что я должен там положить? Я сделал функцию возврата страницы False, если она получает 404, это правильно? Так почему же кроме False: работать? Спасибо за любую помощь, которую вы можете дать.
хорошо, как в совете здесь ive попробовал:
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:
никто из них не работает.