爬虫urllib。request中各种处理器,构造opener。open(处理登陆验证的,处理cookies的,处理代理设置的)

本文介绍了Python的urllib.request库中处理HTTP验证、设置代理和管理Cookies的高级用法。通过HTTPBasicAuthHandler进行验证,使用ProxyHandler配置代理,以及HTTPCookieProcessor管理Cookies。同时,文章还讲解了URL的解析方法,如urlparse、urlunparse等,并提到了如何分析网站的Robots协议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

高级用法  (都不是很懂,所以看之后实践过程中使用吧)

更强大的工具Handler登场  ,可以理解为各种处理器,有专门处理登陆验证的,有处理cookies的,有处理代理设置的。利用它们,我们几乎可以做到HTTP请求中的所有事。

首先介绍的BaseHandler类,它是所有Handler的父类,它提供了最基本的方法,例如default_open()、protocol_request()等

接下来,就有各种Handler子类继承这个BaseHandler类,举例如下:

HTTPDefaultErrorHandler:用于处理HTTP响应错误,错误都会抛出HTTPError类型的异常。

HTTPRedirectHandler:用于处理重定向(什么是重定向)

HTTPCookieProcessor:用于处理Cookies

ProxyHandler:用于设置代理,默认代理为空

HTTPPasswordMgr:用于管理密码,它维护 了用户名和密码的表

HTTPBasicAuthHandler:用于管理认证,如果一个链接打开时

1.验证

from urllib import request,error

username='username'
password='password'

url='http://localhost:5000/'

创建密码管理对象,用来保存需要处理的用户名和密码
p=request.HTTPPasswordMgrWithDefaultRealm()

添加账户信息,第一个参数realm是与远程服务器相关的域信息,一般没人管它都是写None,后面三个参数分别是 代理服务器、用户名、密码
p.add_password(None,url,username,password)

auth_handler=request.HTTPBasicAuthHandler(p)
opener=request.build_opener(auth_handler)
try:
    response=opener.open(url)
    html=response.read().decode('utf-8')
    print(html)
except error.URLError as e:
    print(e.reason)#错误原因

这里首先实例化了HTTPBasicAuthHandler对象,其参数是HTTPPasswordMgrWithDefaultRealm对象,它利用add_password()添加进去用户名和密码,这样就建立了一个处理验证的Handler。

接下来,利用这个Handler并使用b

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值