urllib2自定义opener详解


Posted in Python onFebruary 07, 2014

urllib2.urlopen()函数不支持验证、cookie或者其它HTTP高级功能。要支持这些功能,必须使用build_opener()函数创建自定义Opener对象。

build_opener([handler1 [ handler2, ... ]])

参数handler是Handler实例,常用的有HTTPBasicAuthHandler、HTTPCookieProcessor、ProxyHandler等。

build_opener ()返回的对象具有open()方法,与urlopen()函数的功能相同。

如果要修改http报头,可以用:

import urllib2
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
opener.open('http://www.example.com/')

2. install_opener(opener)

安装不同的opener对象作为urlopen()使用的全局opener。

3. 密码验证(HTTPBasicAuthHandler)

HTTPBasicAuthHandler()处理程序可用add_password()来设置密码。

h.add_password(realm,uri,user,passwd)

realm是与验证相关联的名称或描述信息,取决于远程服务器。uri是基URL。user和passwd分别指定用户名和密码。

import urllib2
auth=urllib2.HTTPBasicAuthHandler()
auth.add_password('Administrator','http://www.example.com','Dave','123456')
opener=urllib2.build_opener(auth)
u=opener.open('http://www.example.com/evilplan.html')

4. Cookie处理(HTTPCookieProcessor)

import urllib2,cookielib
cookie=cookielib.CookieJar()
cookiehand=urllib2.HTTPCookieProcessor(cookie)
opener=urllib2.build_opener(cookiehand)

5.代理(ProxyHandler)

ProxyHandler(proxies)参数proxies是一个字典,将协议名称(http,ftp)等映射到相应代理服务器的URL。

proxy=ProxyHandler({'http':'http://someproxy.com:8080'})
auth=HTTPBasicAuthHandler()
auth.add_password()
opener=build_opener(auth,proxy)

也可以在urlopen中使用代理

import urllib2  
proxy = 'http://%s:%s@%s' % ('userName', 'password', 'proxy')  
inforMation = urllib2.urlopen("http://www.example.com", proxies={'http':proxy}) 
Python 相关文章推荐
Python 调用DLL操作抄表机
Jan 12 Python
python利用paramiko连接远程服务器执行命令的方法
Oct 16 Python
安装python3的时候就是输入python3死活没有反应的解决方法
Jan 24 Python
python使用tensorflow保存、加载和使用模型的方法
Jan 31 Python
pycharm的console输入实现换行的方法
Jan 16 Python
python实现一个简单的ping工具方法
Jan 31 Python
Pandas读取并修改excel的示例代码
Feb 17 Python
解决Python中定时任务线程无法自动退出的问题
Feb 18 Python
Django中如何防范CSRF跨站点请求伪造攻击的实现
Apr 28 Python
Python二维码生成识别实例详解
Jul 16 Python
Python warning警告出现的原因及忽略方法
Jan 31 Python
如何基于python实现单目三维重建详解
Jun 25 Python
python解析html开发库pyquery使用方法
Feb 07 #Python
python3.3实现乘法表示例
Feb 07 #Python
zbar解码二维码和条形码示例
Feb 07 #Python
python命令行参数sys.argv使用示例
Jan 28 #Python
python删除文件示例分享
Jan 28 #Python
python list转dict示例分享
Jan 28 #Python
python使用os模块的os.walk遍历文件夹示例
Jan 27 #Python
You might like
开源SNS系统-ThinkSNS
2008/05/18 PHP
PHP中使用imagick实现把PDF转成图片
2015/01/26 PHP
PHP实现股票趋势图和柱形图
2015/02/07 PHP
PHP-FPM运行状态的实时查看及监控详解
2016/11/18 PHP
PHP中函数gzuncompress无法使用的解决方法
2017/03/02 PHP
PHP实现限制IP访问及提交次数的方法详解
2017/07/17 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
javascript 写类方式之一
2009/07/05 Javascript
JQuery的一些小应用收集
2010/03/27 Javascript
模仿百度三维地图的js数据分享
2011/05/12 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
利用javaScript实现点击输入框弹出窗体选择信息
2013/12/11 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
JavaScript中用let语句声明作用域的用法讲解
2016/05/20 Javascript
jQuery处理XML文件的几种方法
2016/06/14 Javascript
前端框架Vue.js构建大型应用浅析
2016/09/12 Javascript
js控制台输出的方法(详解)
2016/11/26 Javascript
JavaScript之面向对象_动力节点Java学院整理
2017/06/29 Javascript
基于three.js编写的一个项目类示例代码
2018/01/05 Javascript
vue使用keep-alive保持滚动条位置的实现方法
2019/04/09 Javascript
json 带斜杠时如何解析的实现
2019/08/12 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
[02:51]DOTA2战队出征照拍摄花絮 TI3明星化身时尚男模
2013/07/22 DOTA
[48:22]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python中线程的MQ消息队列实现以及消息队列的优点解析
2016/06/29 Python
对python list 遍历删除的正确方法详解
2018/06/29 Python
Python对象的属性访问过程详解
2020/03/05 Python
AmazeUI 网格的实现示例
2020/08/13 HTML / CSS
Net-A-Porter美国官网:全球时尚奢侈品名站
2017/02/11 全球购物
乌克兰设计师和品牌的服装:Love&Live
2020/04/14 全球购物
天游软件面试
2013/11/23 面试题
MYSQL基础面试题
2012/05/13 面试题
银行稽核岗位职责
2015/04/13 职场文书
2015年测量员工作总结
2015/05/23 职场文书
小学思想品德教学反思
2016/02/24 职场文书
python爬取某网站原图作为壁纸
2021/06/02 Python