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 (2)
Oct 31 Python
wxPython 入门教程
Oct 07 Python
python cx_Oracle模块的安装和使用详细介绍
Feb 13 Python
Python安装lz4-0.10.1遇到的坑
May 20 Python
解决python3 安装完Pycurl在import pycurl时报错的问题
Oct 15 Python
python scatter散点图用循环分类法加图例
Mar 19 Python
python3.6使用tkinter实现弹跳小球游戏
May 09 Python
Django使用unittest模块进行单元测试过程解析
Aug 02 Python
python 连续不等式语法糖实例
Apr 15 Python
python模拟哔哩哔哩滑块登入验证的实现
Apr 24 Python
python爬虫使用正则爬取网站的实现
Aug 03 Python
Python3压缩和解压缩实现代码
Mar 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
测试您的 PHP 水平的题目
2007/05/30 PHP
PHP 设置MySQL连接字符集的方法
2011/01/02 PHP
2014年10个最佳的PHP图像操作库
2014/07/14 PHP
PHP中的self关键字详解
2019/06/23 PHP
PHP编程一定要改掉的5个不良习惯
2020/09/18 PHP
Jquery下的26个实用小技巧(jQuery tips, tricks & solutions)
2010/03/01 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
2012/03/01 Javascript
jQuery.query.js 取参数的两点问题分析
2012/08/06 Javascript
jquery入门必备的基本认识及实例(整理)
2013/06/24 Javascript
JS获取月的最后一天与JS得到一个月份最大天数的实例代码
2013/12/16 Javascript
实例说明为什么不要行内使用javascript
2014/04/18 Javascript
JS中使用DOM来控制HTML元素
2016/07/31 Javascript
JavaScript动态数量的文件上传控件
2016/11/18 Javascript
微信小程序 小程序制作及动画(animation样式)详解
2017/01/06 Javascript
vue移动端裁剪图片结合插件Cropper的使用实例代码
2017/07/10 Javascript
深入研究jQuery图片懒加载 lazyload.js使用方法
2017/08/16 jQuery
vue-cli3+ts+webpack实现多入口多出口功能
2019/05/30 Javascript
微信小程序日历插件代码实例
2019/12/04 Javascript
JS字符串和数组如何实现相互转化
2020/07/02 Javascript
jQuery 实现扁平式小清新导航
2020/07/07 jQuery
JavaScript实现刮刮乐效果
2020/11/01 Javascript
[55:35]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第二场 1月22日
2021/03/11 DOTA
Python实现快速多线程ping的方法
2015/07/15 Python
对Python 2.7 pandas 中的read_excel详解
2018/05/04 Python
Python发送邮件功能示例【使用QQ邮箱】
2018/12/04 Python
python运行时强制刷新缓冲区的方法
2019/01/14 Python
TensorFlow实现指数衰减学习率的方法
2020/02/05 Python
HTML5 移动页面自适应手机屏幕四类方法总结
2017/08/17 HTML / CSS
Cotton On美国网站:澳洲时装连锁品牌
2016/10/25 全球购物
SheIn沙特阿拉伯:女装在线
2020/03/23 全球购物
捐助贫困学生倡议书
2014/05/16 职场文书
物流管理专业自荐信
2014/06/23 职场文书
2014年车间工作总结
2014/11/21 职场文书
大学生读书笔记范文
2015/07/01 职场文书
2015年中学总务处工作总结
2015/07/22 职场文书
2015元旦感言
2015/12/09 职场文书