urllib.request中Handler处理器

1、定义
  自定义的urlopen()方法,urlopen()方法是一个特殊的opener(模块已定义好),不支持代理等功能,通过Handler处理器对象来自定义opener对象
2、常用方法
  1、build_opener(Handler处理器对象) :创建opener对象
  2、opener.open(url,参数)
3、使用流程
  1、创建相关的Handler处理器对象
    http_handler = urllib.request.HTTPHandler()
  2、创建自定义opener对象
    opener = urllib.request.build_opener(http_handler)
  3、利用opener对象打开url
    req = urllib.request.Request(url,headers=headers)
    res = opener.open(req)
    result = res.read().decode("utf-8")
4、Handler处理器分类
  1、HTTPHandler() :没有任何特殊功能
  2、ProxyHandler(普通代理)
    代理: {"协议":"IP地址:端口号"}
  3、ProxyBasicAuthHandler(密码管理器对象) :私密代理
  4、HTTPBasicAuthHandler(密码管理器对象) : web客户端认证
5、密码管理器对象作用
  1、私密代理
  2、Web客户端认证
  3、程序实现流程
    1、创建密码管理器对象
      pwdmg = urllib.request.HTTPPasswordMgrWithDefaultRealm()
    2、把认证信息添加到密码管理器对象
      pwdmg.add_password(None,webserver,user,passwd)
    3、创建Handler处理器对象
      1、私密代理
        proxy = urllib.request.ProxyAuthBasicHandler(pwdmg)
      2、Web客户端
        webbasic = urllib.request.HTTPBasicAuthHandler(pwdmg)

原文地址:https://www.cnblogs.com/zengsf/p/10024480.html