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分析git log日志示例
Feb 27 Python
使用Python获取Linux系统的各种信息
Jul 10 Python
Python读取指定目录下指定后缀文件并保存为docx
Apr 23 Python
Python排序搜索基本算法之选择排序实例分析
Dec 09 Python
python 拷贝特定后缀名文件,并保留原始目录结构的实例
Apr 27 Python
Pyspider中给爬虫伪造随机请求头的实例
May 07 Python
python事件驱动event实现详解
Nov 21 Python
python http基本验证方法
Dec 26 Python
python pyinstaller打包exe报错的解决方法
Nov 02 Python
在OpenCV里使用Camshift算法的实现
Nov 22 Python
python实现密码强度校验
Mar 18 Python
pycharm软件实现设置自动保存操作
Jun 08 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计算数组不为空元素个数的方法
2014/01/27 PHP
PHP使用适合阅读的格式显示文件大小的方法
2015/03/05 PHP
PHP下载文件的函数实例代码
2016/05/18 PHP
详解php实现页面静态化原理
2017/06/21 PHP
js展开闭合效果演示代码
2013/07/24 Javascript
js函数定时器实现定时读取系统实时连接数
2014/04/30 Javascript
javascript实现在下拉列表中显示多级树形菜单的方法
2015/08/12 Javascript
老生常谈JavaScript 函数表达式
2016/09/01 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
2017/04/13 Javascript
在vue-cli脚手架中配置一个vue-router前端路由
2017/07/03 Javascript
详解angularjs popup-table 弹出框表格指令
2017/09/20 Javascript
Node.js中DNS模块学习总结
2018/02/28 Javascript
简述vue状态管理模式之vuex
2018/08/29 Javascript
Vue CLI 2.x搭建vue(目录最全分析)
2019/02/27 Javascript
利用node 判断打开的是文件 还是 文件夹的实例
2019/06/10 Javascript
jQuery事件委托代码实践详解
2019/06/21 jQuery
vue服务端渲染操作简单入门实例分析
2019/08/28 Javascript
微信小程序如何加载数据库真实数据的实现
2020/03/04 Javascript
[04:45]上海特级锦标赛主赛事第三日TOP10
2016/03/05 DOTA
解决pycharm 误删掉项目文件的处理方法
2018/10/22 Python
Django如何将URL映射到视图
2019/07/29 Python
python datetime中strptime用法详解
2019/08/29 Python
python_mask_array的用法
2020/02/18 Python
python3环境搭建过程(利用Anaconda+pycharm)完整版
2020/08/19 Python
意大利体育用品网上商城:Nencini Sport
2016/08/18 全球购物
毕业生求职推荐信
2013/11/04 职场文书
夜班门卫岗位职责
2013/12/09 职场文书
计算机毕业生求职信
2014/06/10 职场文书
销售顾问工作计划书
2014/09/15 职场文书
党员群众路线教育实践活动学习笔记
2014/11/05 职场文书
物业工程部岗位职责
2015/02/11 职场文书
导游词之神仙居景区
2019/11/15 职场文书
PostgreSQL并行计算算法及参数强制并行度设置方法
2022/04/07 PostgreSQL
golang的文件创建及读写操作
2022/04/14 Golang
Elasticsearch Recovery 详细介绍
2022/04/19 Java/Android