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中给List添加元素的4种方法分享
Nov 28 Python
python实现挑选出来100以内的质数
Mar 24 Python
基于Django用户认证系统详解
Feb 21 Python
Python SQLite3简介
Feb 22 Python
对python list 遍历删除的正确方法详解
Jun 29 Python
Python Django实现layui风格+django分页功能的例子
Aug 29 Python
python-numpy-指数分布实例详解
Dec 07 Python
python 将dicom图片转换成jpg图片的实例
Jan 13 Python
python怎么判断素数
Jul 01 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
Aug 24 Python
解决python和pycharm安装gmpy2 出现ERROR的问题
Aug 28 Python
Python urlopen()参数代码示例解析
Dec 10 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
PHP4.04简明安装
2006/10/09 PHP
一个取得文件扩展名的函数
2006/10/09 PHP
功能齐全的PHP发送邮件类代码附详细说明
2008/07/10 PHP
php基于PDO连接MSSQL示例DEMO
2016/07/13 PHP
适合PHP初学者阅读的4本经典书籍
2016/09/23 PHP
php实现将base64格式图片保存在指定目录的方法
2016/10/13 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
关于IE7 IE8弹出窗口顶上
2008/12/22 Javascript
JavaScript:Div层拖动效果实例代码
2013/08/06 Javascript
jQuery使用hide方法隐藏元素自身用法实例
2015/03/30 Javascript
JSON字符串和对象之间的转换详解
2015/05/26 Javascript
纯JavaScript代码实现移动设备绘图解锁
2015/10/16 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
2017/03/29 jQuery
echarts设置图例颜色和地图底色的方法实例
2018/08/01 Javascript
小程序实现五星点评效果
2018/11/03 Javascript
微信小程序入门之广告条实现方法示例
2018/12/05 Javascript
vue配置接口域名方法总结
2019/05/12 Javascript
js回溯法计算最佳旅行线路代码实例
2019/09/11 Javascript
layui点击数据表格添加或删除一行的例子
2019/09/12 Javascript
浅谈vue中resetFields()使用注意事项
2020/08/12 Javascript
基于python编写的微博应用
2014/10/17 Python
Python的Flask框架中SQLAlchemy使用时的乱码问题解决
2015/11/07 Python
tensorflow TFRecords文件的生成和读取的方法
2018/02/06 Python
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
2019/06/13 Python
浅析matlab中imadjust函数
2020/02/27 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
2020/03/31 Python
使用npy转image图像并保存的实例
2020/07/01 Python
如何基于matlab相机标定导出xml文件
2020/11/02 Python
如何用python 操作zookeeper
2020/12/28 Python
在html页面中取得session中的值的方法
2020/08/11 HTML / CSS
大学生党员学习焦裕禄精神思想汇报
2014/09/10 职场文书
起诉书范文
2015/05/20 职场文书
高中家长意见怎么写
2015/06/03 职场文书
python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
2021/06/08 Python
总结python多进程multiprocessing的相关知识
2021/06/29 Python