(continued from previous page) 'You must use proxy specified in Location to access this ' 'resource.'), 307 : ( 'Temporary Redirect', 'Object moved temporarily -- see URI list '), 400 : ( 'Bad Request', 'Bad request syntax or unsupported method '), 401 : ( 'Unauthorized ', 'No permission -- see authorization schemes'), 402 : ( 'Payment Required', 'No payment -- see charging schemes '), 403 : ( 'Forbidden ', 'Request forbidden -- authorization will not help '), 404 : ( 'Not Found ','Nothing matches the given URI '), 405 : ( 'Method Not Allowed ', 'Specified method is invalid for this server.'), 406 : ( 'Not Acceptable','URI not available in preferred format. '), 407 : ( 'Proxy Authentication Required ','You must authenticate with ' 'this proxy before proceeding.'), 408 : ( 'Request Timeout','Request timed out; try again later. '), 409 : ( 'Conflict','Request conflict. '), 410 : ( 'Gone ', 'URI no longer exists and has been permanently removed. '), 411 : ( 'Length Required ','Client must specify Content-Length. '), 412 : ( 'Precondition Failed ','Precondition in headers is false.'), 413 : ( 'Request Entity Too Large','Entity is too large. '), 414 : ( 'Request-URI Too Long','URI is too long.'), 415 : ( 'Unsupported Media Type','Entity body in unsupported format. '), 416 : ( 'Requested Range Not Satisfiable', 'Cannot satisfy request range. '), 417 : ( 'Expectation Failed', 'Expect condition could not be satisfied. '), 500 : ( 'Internal Server Error','Server got itself in trouble '), 501 : ( 'Not Implemented', 'Server does not support this operation'), 502 : ( 'Bad Gateway','Invalid responses from another server/proxy. '), 503 : ( 'Service Unavailable ', 'The server cannot process the request due to a high load'), 504 : ( 'Gateway Timeout', 'The gateway server did not receive a timely response '), 505 : ( 'HTTP Version Not Supported ','Cannot fulfill request. '), } 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 as returned by the$_{urllib.response}$ module: >>> req =urllib.request.Request('http://www.python.org/fish.html ') >>>try : ... urllib.request.urlopen(req) ...except urllib.error .HTTPError as e: ... print(e.code) ... print(e.read()) ... 404 b'<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">


<html ... <title>Page Not Found</title>
 ... 6