Python标准库之urllib,urllib2自定义Opener
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‘ )] |
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() 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 |
auth = HTTPBasicAuthHandler() auth.add_password() opener = build_opener(auth,proxy) |
也可以在urlopen中使用代理
1
2
3 |
import
urllib2 |
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。