当前位置: 移动技术网 > IT编程>脚本编程>Python > urllib2自定义opener详解

urllib2自定义opener详解

2019年04月01日  | 移动技术网IT编程  | 我要评论

法学在职研究生,中秋图片大全,厕奴日志

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}) 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网