Python urllib2: Reading content body even during HTTPError exception?

前端 未结 3 1596
天命终不由人
天命终不由人 2021-01-31 13:38

I\'m using urllib2 to fetch a a page via HTTP. Sometimes the resource throws a HTTP error 400 (Bad Request) when my request contains an error. However, that response also cont

相关标签:
3条回答
  • 2021-01-31 13:39

    You can read the response message from the HTTPError exception.

    Python3 example

    import urllib.request
    
    try:
        request = urllib.request.Request('http://httpstat.us/418', headers={'Accept': 'text/plain', 'User-Agent': ''})
        with urllib.request.urlopen(request) as page:
            print('success: ' + page.read().decode())
    except urllib.error.HTTPError as httpError:
            error = httpError.read().decode()
            print('error: ' + error)
    
    0 讨论(0)
  • 2021-01-31 13:48
    import urllib2
    try:
        request = urllib2.Request('http://www.somesite.com')
        response = urllib2.urlopen(req)
    except urllib2.HTTPError as e:
        error_message = e.read()
        print error_message
    
    0 讨论(0)
  • 2021-01-31 14:00

    You can treat the error as a response.

    http://www.voidspace.org.uk/python/articles/urllib2.shtml#httperror

    When an error is raised the server responds by returning an HTTP error code and an error page. You can use the HTTPError instance as a response on the page returned. This means that as well as the code attribute, it also has read, geturl, and info, methods.

    0 讨论(0)
提交回复
热议问题