urllib2自定义opener

1.build_opener()
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})  
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、概述 urllib2是Python的一个针对URLs的库。他以urlopen函数的形式提供了一个非常简单的...
    MiracleJQ阅读 5,371评论 0 5
  • 1 前言 作为一名合格的数据分析师,其完整的技术知识体系必须贯穿数据获取、数据存储、数据提取、数据分析、数据挖掘、...
    whenif阅读 18,225评论 45 523
  • 一、网络爬虫的定义 网络爬虫,即Web Spider,是一个很形象的名字。把互联网比喻成一个蜘蛛网,那么Spide...
    随风化作雨阅读 4,913评论 0 0
  • 哇,今天最大的收获就是她回我消息了。终于,终于回我了,是在小秘密里回答的。虽然我不知道为啥她会知道是我,但我很开心...
    桐花烂漫阅读 1,558评论 0 0
  • 在近十年的教学经历中,无论在理论课还是在实验课,总会发现很多优秀的学生,他们认真听讲、用心预习和实验、作业整齐,并...
    活着不易阅读 2,880评论 0 4

友情链接更多精彩内容