urllib2自定义opener
2016-01-13 16:13
375 查看
urllib2.urlopen()函数不支持验证、cookie或者其它HTTP高级功能。要支持这些功能,必须使用build_opener()函数创建自定义Opener对象。
build_opener([handler1 [ handler2, … ]])
参数handler是Handler实例,常用的有HTTPBasicAuthHandler、HTTPCookieProcessor、ProxyHandler等。
build_opener ()返回的对象具有open()方法,与urlopen()函数的功能相同。
1.修改http报头
2.install_opener(opener)
安装不同的opener对象作为urlopen()使用的全局opener。
3.密码验证(HTTPBasicAuthHandler)
HTTPBasicAuthHandler()处理程序可用add_password()来设置密码。
h.add_password(realm,uri,user,passwd)
realm是与验证相关联的名称或描述信息,取决于远程服务器。uri是基URL。user和passwd分别指定用户名和密码。
4.Cookie处理(HTTPCookieProcessor)
5.代理(ProxyHandler)
ProxyHandler(proxies)参数proxies是一个字典,将协议名称(http,ftp)等映射到相应代理服务器的URL。
也可以在urlopen中使用代理
build_opener([handler1 [ handler2, … ]])
参数handler是Handler实例,常用的有HTTPBasicAuthHandler、HTTPCookieProcessor、ProxyHandler等。
build_opener ()返回的对象具有open()方法,与urlopen()函数的功能相同。
1.修改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})
相关文章推荐
- Hadoop 的发展史和版本
- Linux (ubuntu) 下常用操作指令学习
- Hadoop-HDFS架构
- Linux学习之给指定用户发邮件
- Shell脚本运行hive语句 | hive以日期建立分区表 | linux schedule程序 | sed替换文件字符串 | shell推断hdfs文件文件夹是否存在
- 底部菜单栏(二)Fragment+PopupWindow仿QQ空间最新版底部菜单栏
- OpenCV中的调试神器Image Watch
- linux下zabbix安装详解
- ubuntu 14.04 下 启用thinpad指点杆
- Powershell 提权框架-Powerup
- Apache Shiro 使用手册(一)Shiro架构介绍
- kylin linux麒麟Linux进入单用户模式
- XCode集成shell脚本
- shell 数字运算
- GB28181《安全防范视频监控联网系统 信息传输、交换、控制技术要求》 一次下载全了
- tomcat 日志用log4j管理
- Linux debug过程中的问题
- 高性能web服务器nginx(四)之nginx的反向代理、负载均衡、缓存、URL重写
- 高性能web服务器nginx(三)之源码搭建LNMP
- Jenkins自动打包部署配置(SSH)