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使用scrapy采集数据过程中放回下载过大页面的方法
Apr 08 Python
Python实现在matplotlib中两个坐标轴之间画一条直线光标的方法
May 20 Python
python 获取网页编码方式实现代码
Mar 11 Python
django基础之数据库操作方法(详解)
May 24 Python
Python根据已知邻接矩阵绘制无向图操作示例
Jun 23 Python
pyhanlp安装介绍和简单应用
Feb 22 Python
django框架实现模板中获取request 的各种信息示例
Jul 01 Python
浅谈Python小波分析库Pywavelets的一点使用心得
Jul 09 Python
Django stark组件使用及原理详解
Aug 22 Python
python 的numpy库中的mean()函数用法介绍
Mar 03 Python
python实现人脸签到系统
Apr 13 Python
Python如何使用队列方式实现多线程爬虫
May 12 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
thinkPHP基于ajax实现的菜单与分页示例
2016/07/12 PHP
微信自定义菜单的创建/查询/取消php示例代码
2016/08/05 PHP
PHPExcel 修改已存在Excel的方法
2018/05/03 PHP
javascript dom 基本操作小结
2010/04/11 Javascript
Javascript 面向对象 对象(Object)
2010/05/13 Javascript
jquery form表单提交插件asp.net后台中文解码
2010/06/12 Javascript
zeroclipboard复制到剪切板的flash
2010/08/04 Javascript
JqGrid web打印实现代码
2011/05/31 Javascript
input 和 textarea 输入框最大文字限制的jquery插件
2011/10/27 Javascript
深入分析JQuery和JavaScript的异同
2014/10/23 Javascript
nodejs开发微博实例
2015/03/25 NodeJs
关于Vue.js 2.0的Vuex 2.0 你需要更新的知识库
2016/11/30 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
JavaScript截屏功能的实现代码
2017/07/28 Javascript
关于微信小程序bug记录与解决方法
2018/08/15 Javascript
react 父子组件之间通讯props
2018/09/08 Javascript
Vue在chrome44偶现点击子元素事件无法冒泡的解决方法
2019/12/15 Javascript
详解datagrid使用方法(重要)
2020/11/06 Javascript
[03:08]TI9战队档案 - Vici Gaming
2019/08/20 DOTA
Python程序语言快速上手教程
2012/07/18 Python
关于django 数据库迁移(migrate)应该知道的一些事
2018/05/27 Python
python读取有密码的zip压缩文件实例
2019/02/08 Python
简单了解Python3 bytes和str类型的区别和联系
2019/12/19 Python
如何基于python实现不邻接植花
2020/05/01 Python
Python SQLAlchemy库的使用方法
2020/10/13 Python
维多利亚的秘密官方网站:Victoria’s Secret
2018/10/24 全球购物
学前教育毕业生自荐信
2013/10/29 职场文书
网络维护中文求职信
2014/01/03 职场文书
高三学习决心书
2014/03/11 职场文书
婚前协议书怎么写
2014/04/15 职场文书
留学推荐信中文范文
2015/03/26 职场文书
市场督导岗位职责
2015/04/10 职场文书
道士塔读书笔记
2015/06/30 职场文书
python学习之panda数据分析核心支持库
2021/05/07 Python
浅谈python中的多态
2021/06/15 Python
volatile保证可见性及重排序方法
2022/08/05 Java/Android