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)
相关文章
- 09-30ResourceHttpRequestHandler——SpringMVC静态资源发布时使用的处理器handler
- 09-30万字复盘 Handler 中各式 Message 的使用和原理
- 09-30在Thread中创建Handler报错
- 09-30Handler消息机制(五):多个Handler往MessageQueue中添加数据,内部是如何确保线程安全的
- 09-30Handler中Looper死循环为什么不会导致应用卡死?
- 09-30android – 在Handler中设置文本在Handler中的性能不佳
- 09-30netty发送和接收数据handler处理器
- 09-30Android中为什么需要Handler?大厂直通车!
- 09-30我收到此错误“你的CPU不支持vt-x或svm,AMD 6300处理器中的android studio 2.1.1”
- 09-30爬虫(GET)——handler处理器和自定义opener