python3 学习笔记之 urllib.request《二》 (urllib2 in python2)

本文介绍如何使用Python的urllib2模块通过自定义Opener对象和Handler实例来增强网络请求的功能,包括支持验证、处理cookie及重定向等功能。

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

opener and handlers

urllib2.urlopen()函数不支持验证、cookie或者其它HTTP高级功能。要支持这些功能,必须使用build_opener()函数创建自定义Opener对象。

opener:

我们可以根据我们自己的 需要定制一个opener 并通过opener.open(url)方法来获得一个response。
handler :

参数handler是Handler实例,常用的有HTTPBasicAuthHandler、HTTPCookieProcessor、ProxyHandler等。

一个完整的例子:

import urllib.request as urllib2

class MyRedirectHandler(urllib2.HTTPRedirectHandler):
    def http_error_302(self, req, fp, code, msg, headers):
    #print "REDICt:",headers.headers
        return urllib2.HTTPRedirectHandler.http_error_302(self, req, fp, code, msg, headers)


    cookie = cookielib.CookieJar()
    opener = urllib2.build_opener(MyRedirectHandler,urllib2.HTTPCookieProcessor(cookie))
    urllib2.install_opener(opener)
    req = urllib2.Request(url_kb)
    response = opener.open(req)
    print (response.read())

下面我们分析下这段代码:
我们使用build_opener()函数创建自定义Opener对象。

build_opener([handler1 [ handler2, … ]])

handler是Handler的实例,上面例子我们创建了两个实例。
调用install_opener()方法后我们就可以使用它可,这个opener就好比你为了访问网站而搭建了个环境。这个环境可以满足访问网站的需求和处理访问网站时所需要的信息。
我们也可以调用 addheaders()方法为opener添加首部。
做完一切准备工作后我们就可以用opener()访问或请求页面了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值