我们虽然可以构造请求,但是对于一些更高级的操作(比如 Cookies 处理、 代 理设置等),我们该怎么办呢?
接下来,就需要更强大的工具 Handler。
简而言之,我们可以把它理解为各种处理器,有专门处理登录验证的,有处理 Cookies 的,有处理代理设置的。 利用它们,我们几乎可以做到 HTTP 请求中所有的事情。
首先,介绍一下 urllib.request模块里的BaseHandler类,它是所有其他Handler的父类,它提供了最基本的方法,例如 default_open()、 protocol_request()等。
接下来,就有各种Handler子类继承这个BaseHandler类,举例如下。
HITPDefaultErrorHandler:用于处理HTTP 响应错误,错误都会抛出 HTTPError类型的异常。
HTTPRedirectHandler:用于处理重定向。
HTTPCookieProcessor: 用于处理 Cookies。
ProxyHandler:用于设置代理, 默认代理为空。
HTTPPasswordMgr:用于管理密码,它维护了用户名和密码的表。
HTTPBasicAuthHandler : 用于管理认证,如果一个链接打开时需要认证,那么可以用它来解决认证问题。
另外,还有其他的 Handler 类,这里就不一