首页 > 编程语言 > 详细

Python标准库之urllib,urllib2自定义Opener

时间:2014-02-04 02:23:00      阅读:440      评论:0      收藏:0      [点我收藏+]

urllib2.urlopen()函数不支持验证、cookie或者其它HTTP高级功能。要支持这些功能,必须使用build_opener()函数创建自定义Opener对象。

1. build_opener([handler1 [ handler2, ... ]])

参数handler是Handler实例,常用的有HTTPBasicAuthHandler、HTTPCookieProcessor、ProxyHandler等。

build_opener ()返回的对象具有open()方法,与urlopen()函数的功能相同。

如果要修改http报头,可以用:

1
2
3
4
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分别指定用户名和密码。

1
2
3
4
5
import urllib2
auth=urllib2.HTTPBasicAuthHandler()
auth.add_password(‘Administrator‘,http://www.example.com,‘Dave‘,‘123456‘)
opener=urllib2.build_opener(auth)

4. Cookie处理(HTTPCookieProcessor)

1
2
3
4
import urllib2,cookielib
cookie=cookielib.CookieJar()
cookiehand=urllib2.HTTPCookieProcessor(cookie)
opener=urllib2.build_opener(cookiehand)

5.代理(ProxyHandler)

ProxyHandler(proxies)参数proxies是一个字典,将协议名称(http,ftp)等映射到相应代理服务器的URL。

1
2
3
4
proxy=ProxyHandler({‘http‘:http://someproxy.com:8080})
auth=HTTPBasicAuthHandler()
auth.add_password()
opener=build_opener(auth,proxy)

也可以在urlopen中使用代理

1
2
3
import urllib2 
proxy = http://%s:%s@%s % (‘userName‘, ‘password‘, ‘proxy‘
inforMation = urllib2.urlopen("http://www.example.com", proxies={‘http‘:proxy})      

  

Python标准库之urllib,urllib2自定义Opener

原文:http://www.cnblogs.com/linxiyue/p/3537557.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!