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 相关文章推荐
使用IPython下的Net-SNMP来管理类UNIX系统的教程
Apr 15 Python
Python的装饰器模式与面向切面编程详解
Jun 21 Python
深入分析python数据挖掘 Json结构分析
Apr 21 Python
python实现石头剪刀布程序
Jan 20 Python
python实现二维数组的对角线遍历
Mar 02 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
Apr 26 Python
详解django实现自定义manage命令的扩展
Aug 13 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
Oct 30 Python
Python list与NumPy array 区分详解
Nov 06 Python
PyCharm 在Windows的有用快捷键详解
Apr 07 Python
python绘图pyecharts+pandas的使用详解
Dec 13 Python
详解用Python把PDF转为Word方法总结
Apr 27 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
解析二进制流接口应用实例 pack、unpack、ord 函数使用方法
2013/06/18 PHP
javascript call和apply方法
2008/11/24 Javascript
JavaScript变量声明详解
2014/11/27 Javascript
js简单实现竖向tab选项卡的方法
2015/05/04 Javascript
jQuery实现自动调整字体大小的方法
2015/06/15 Javascript
小心!AngularJS结合RequireJS做文件合并压缩的那些坑
2016/01/09 Javascript
基于jQuery实现二级下拉菜单效果
2016/02/01 Javascript
原生js实现网易轮播图效果
2020/04/10 Javascript
一步步教你利用Canvas对图片进行处理
2017/09/19 Javascript
angularjs实现猜大小功能
2017/10/23 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
2017/12/29 Javascript
vue单页面实现当前页面刷新或跳转时提示保存
2018/11/02 Javascript
jQuery实现点击旋转,再点击恢复初始状态动画效果示例
2018/12/11 jQuery
countUp.js实现数字滚动效果
2019/10/18 Javascript
解决Vue项目打包后打开index.html页面显示空白以及图片路径错误的问题
2019/10/25 Javascript
解决axios post 后端无法接收数据的问题
2019/10/29 Javascript
Vue中使用better-scroll实现轮播图组件
2020/03/07 Javascript
学习python的几条建议分享
2013/02/10 Python
Python实现代码统计工具(终极篇)
2016/07/04 Python
python实现基于SVM手写数字识别功能
2020/05/27 Python
Python贪心算法实例小结
2018/04/22 Python
Python调用百度根据经纬度查询地址的示例代码
2019/07/07 Python
基于Python实现ComicReaper漫画自动爬取脚本过程解析
2019/11/11 Python
python 解压、复制、删除 文件的实例代码
2020/02/26 Python
python Django 反向访问器的外键冲突解决
2020/05/20 Python
CSS3 3D旋转rotate效果实例介绍
2016/05/03 HTML / CSS
全球最大的在线旅游公司:Expedia
2017/11/16 全球购物
Monica Vinader官网:英国轻奢珠宝品牌
2020/02/05 全球购物
工程师自我评价怎么写
2013/09/19 职场文书
自我评价怎么写正确呢?
2013/12/02 职场文书
美德少年事迹材料500字
2014/08/19 职场文书
公司租房协议书
2014/10/14 职场文书
2014大学辅导员工作总结
2014/12/02 职场文书
违纪检讨书范文
2015/01/27 职场文书
采购部年度工作总结
2015/08/13 职场文书
15个值得收藏的JavaScript函数
2021/09/15 Javascript