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根据距离和时长计算配速示例
Feb 16 Python
python网络编程示例(客户端与服务端)
Apr 24 Python
Python爬取读者并制作成PDF
Mar 10 Python
python查找指定具有相同内容文件的方法
Jun 28 Python
python 时间信息“2018-02-04 18:23:35“ 解析成字典形式的结果代码详解
Apr 19 Python
python docx 中文字体设置的操作方法
May 08 Python
对Python3之进程池与回调函数的实例详解
Jan 22 Python
python 读写excel文件操作示例【附源码下载】
Jun 19 Python
python识别图像并提取文字的实现方法
Jun 28 Python
基于Tensorflow批量数据的输入实现方式
Feb 05 Python
python scatter函数用法实例详解
Feb 11 Python
查看keras各种网络结构各层的名字方式
Jun 11 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
全国FM电台频率大全 - 12 安徽省
2020/03/11 无线电
php session 预定义数组
2009/03/16 PHP
php读取html并截取字符串的简单代码
2009/11/30 PHP
php中对2个数组相加的函数
2011/06/24 PHP
Laravel框架实现发送短信验证功能代码
2016/06/06 PHP
thinkPHP5框架设置404、403等http状态页面的方法
2018/06/05 PHP
jquery自动将form表单封装成json的具体实现
2014/03/17 Javascript
一个判断抢购时间是否到达的简单的js函数
2014/06/23 Javascript
如何根据百度地图计算出两地之间的驾驶距离(两种语言js和C#)
2015/10/29 Javascript
jquery validate.js表单验证入门实例(附源码)
2015/11/10 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
深入解析桶排序算法及Node.js上JavaScript的代码实现
2016/07/06 Javascript
Node.js 文件夹目录结构创建实例代码
2016/07/08 Javascript
源码分析Vue.js的监听实现教程
2017/04/23 Javascript
jQuery实现图片简单轮播功能示例
2018/08/13 jQuery
详解小程序云开发数据库
2019/05/20 Javascript
Vue实现商品分类菜单数量提示功能
2019/07/26 Javascript
JavaScript代码异常监控实现过程详解
2020/02/17 Javascript
Vue-cli4 配置 element-ui 按需引入操作
2020/09/11 Javascript
基于vuex实现购物车功能
2021/01/10 Vue.js
python通过shutil实现快速文件复制的方法
2015/03/14 Python
Pandas标记删除重复记录的方法
2018/04/08 Python
Python3实现将本地JSON大数据文件写入MySQL数据库的方法
2018/06/13 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
对python:循环定义多个变量的实例详解
2019/01/20 Python
python文件排序的方法总结
2020/09/13 Python
Python之字典对象的几种创建方法
2020/09/30 Python
美丽的现代设计家具:2Modern
2018/07/26 全球购物
2014全国两会学习心得体会1000字
2014/03/10 职场文书
平面设计求职信
2014/03/10 职场文书
社区活动总结报告
2014/05/05 职场文书
职位说明书范文
2014/05/07 职场文书
琅琊山导游词
2015/02/05 职场文书
会计主管岗位职责
2015/04/02 职场文书
工程催款通知书
2015/04/17 职场文书
python图像处理基本操作总结(PIL库、Matplotlib及Numpy)
2021/06/08 Python