urllib2 попробуйте и кроме 404

Я пытаюсь просмотреть серию пронумерованных данных страницы, использующие urlib2. Что я хочу сделать, так это использовать оператор try, но я мало о нем знаю. Судя по чтению немного, он, кажется, основан на определенных «именах», которые являются исключениями, например, IOError и т. Д. Я не знаю, что код ошибки - это я ищу, что является частью проблемы.

Я написал / вставил из 'urllib2 the missing manual' мою процедуру загрузки страницы 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: не работает? Спасибо за любую помощь, которую вы можете оказать.

хорошо, согласно совету здесь я пробовал:

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:

ни один из них не работает.

12
задан kenorb 28 July 2015 в 08:38
поделиться