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中无限元素列表的实现方法
Aug 18 Python
使用Python的Twisted框架实现一个简单的服务器
Apr 16 Python
python访问mysql数据库的实现方法(2则示例)
Jan 06 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
May 25 Python
对numpy和pandas中数组的合并和拆分详解
Apr 11 Python
对python中使用requests模块参数编码的不同处理方法
May 18 Python
Python爬虫——爬取豆瓣电影Top250代码实例
Apr 17 Python
使用celery和Django处理异步任务的流程分析
Feb 19 Python
python实现单张图像拼接与批量图片拼接
Mar 23 Python
Python实现随机生成迷宫并自动寻路
Jun 13 Python
python中%格式表达式实例用法
Jun 18 Python
Python数据处理的三个实用技巧分享
Apr 01 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
回首过去10年中最搞笑的10部动漫,哪一部让你节操尽碎?
2020/03/03 日漫
php Static关键字实用方法
2010/06/04 PHP
php密码生成类实例
2014/09/24 PHP
标准PHP的AES加密算法类
2015/03/12 PHP
PHP使用php-resque库配合Redis实现MQ消息队列的教程
2016/06/29 PHP
JS动画效果代码3
2008/04/03 Javascript
IE8 兼容性问题(属性名区分大小写)
2009/06/04 Javascript
JavaScript window.setTimeout() 的详细用法
2009/11/04 Javascript
让textarea自动调整大小的js代码
2011/04/12 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
2013/10/17 Javascript
javascript中match函数的用法小结
2014/02/08 Javascript
jquery.post用法之type设置问题
2014/02/24 Javascript
AngularJS向后端ASP.NET API控制器上传文件
2016/02/03 Javascript
jQuery如何封装输入框插件
2016/08/19 Javascript
JavaScript定时器制作弹窗小广告
2017/02/05 Javascript
基于jQuery Ajax实现下拉框无刷新联动
2017/12/06 jQuery
Vue shopCart 组件开发详解
2018/01/26 Javascript
解决vue移动端适配问题
2018/12/12 Javascript
cocos2dx+lua实现橡皮擦功能
2018/12/20 Javascript
3分钟了解vue数据劫持的原理实现
2019/05/01 Javascript
如何通过vscode运行调试javascript代码
2020/07/24 Javascript
typescript配置alias的详细步骤
2020/08/12 Javascript
python中执行shell的两种方法总结
2017/01/10 Python
Python安装官方whl包和tar.gz包的方法(推荐)
2017/06/04 Python
Python实现爬虫爬取NBA数据功能示例
2018/05/28 Python
Django 删除upload_to文件的步骤
2020/03/30 Python
jupyter notebook 的工作空间设置操作
2020/04/20 Python
Tensorflow全局设置可见GPU编号操作
2020/06/30 Python
荷兰优雅女装网上商店:Heine
2016/11/14 全球购物
人事助理岗位职责
2013/11/18 职场文书
小学生红领巾广播稿
2014/01/21 职场文书
出纳员的岗位职责
2014/02/22 职场文书
延安红色之旅心得体会
2014/10/07 职场文书
公安机关纪律作风整顿剖析
2014/10/10 职场文书
关于Vue Router的10条高级技巧总结
2021/05/06 Vue.js
golang生成vcf通讯录格式文件详情
2022/03/25 Golang