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' )] 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) u = opener. open ( 'http://www.example.com/evilplan.html' ) |
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
· Manus的开源复刻OpenManus初探