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 ldap实现登录实例代码
Sep 30 Python
python中获得当前目录和上级目录的实现方法
Oct 12 Python
Django Admin实现三级联动的示例代码(省市区)
Jun 22 Python
基于DataFrame改变列类型的方法
Jul 25 Python
Python3 单行多行万能正则匹配方法
Jan 07 Python
带你认识Django
Jan 15 Python
Python pygame绘制文字制作滚动文字过程解析
Dec 12 Python
python操作gitlab API过程解析
Dec 27 Python
Python中的sys.stdout.write实现打印刷新功能
Feb 21 Python
python3使用Pillow、tesseract-ocr与pytesseract模块的图片识别的方法
Feb 26 Python
Django 解决distinct无法去除重复数据的问题
May 20 Python
详解python中GPU版本的opencv常用方法介绍
Jul 24 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
PHP生成随机用户名和密码的实现代码
2013/02/27 PHP
基于session_unset与session_destroy的区别详解
2013/06/03 PHP
PHP设计模式之装饰器模式定义与用法简单示例
2018/08/13 PHP
excel操作之Add Data to a Spreadsheet Cell
2007/06/12 Javascript
javascript 获取select下拉列表值的代码
2009/09/07 Javascript
兼容IE与firefox火狐的回车事件(js与jquery)
2010/10/20 Javascript
给artDialog 5.02 增加ajax get功能详细介绍
2012/11/13 Javascript
JQuery 常用方法和事件详细介绍
2013/04/18 Javascript
JS设置cookie、读取cookie、删除cookie
2015/04/17 Javascript
Windows 系统下设置Nodejs NPM全局路径
2016/04/26 NodeJs
JavaScript的模块化开发框架Sea.js上手指南
2016/05/12 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
JavaScript对象数组排序实例方法浅析
2016/06/15 Javascript
Vue表单demo v-model双向绑定问题
2018/06/29 Javascript
jquery实现搜索框功能实例详解
2018/07/23 jQuery
基于vue、react实现倒计时效果
2019/08/26 Javascript
微信浏览器左上角返回按钮监听的实现
2020/03/04 Javascript
js根据后缀判断文件文件类型的代码
2020/05/09 Javascript
基于原生js实现九宫格算法代码实例
2020/07/03 Javascript
vue+elementui通用弹窗的实现(新增+编辑)
2021/01/07 Vue.js
tensorflow实现简单的卷积网络
2018/05/24 Python
Python调用adb命令实现对多台设备同时进行reboot的方法
2018/10/15 Python
python web自制框架之接受url传递过来的参数实例
2018/12/17 Python
wxpython绘制音频效果
2019/11/18 Python
Python实时监控网站浏览记录实现过程详解
2020/07/14 Python
Python过滤序列元素的方法
2020/07/31 Python
python实现简单的五子棋游戏
2020/09/01 Python
css3中transition属性详解
2014/09/02 HTML / CSS
哈曼俄罗斯官方网上商店:Harman.club
2020/07/24 全球购物
大专计算机个人求职的自我评价
2013/10/21 职场文书
端午节粽子促销活动方案
2014/02/02 职场文书
销售员求职个人的自我评价
2014/02/19 职场文书
见习报告怎么写
2014/10/31 职场文书
唱歌比赛拉拉队口号
2015/12/25 职场文书
《家庭教育》读后感3篇
2019/12/18 职场文书
如何在Python中妥善使用进度条详解
2022/04/05 Python