python爬虫学习第二天

今天有点忙,待会儿还要出去一趟,只敲了一点,明天一定要把这节看完。

urllib.request高级特性

大家有没有发现,在上面的过程中,我们虽然可以构造Request,但是一些更高级的操作,比如Cookies处理,代理设置等操作我们该怎么办?
接下来就需要更强大的工具Handler登场了。
简而言之你可以把它理解为各种处理器,有专门处理登录验证的,有处理Cookies的,有处理代理设置的,利用它们我们几乎可以做到任何HTTP请求中所有的事情。

使用Handler构建更加高级的爬虫

首先介绍下urllib.request.BaseHandler,它是所有其他Handler的父类,它提供了最基本的Handler的方法,例如default_open()、protocol_request()等。
接下来就有各种Handler子类继承这个BaseHandler,举例几个如下:
HTTPDefaultErrorHandler用于处理HTTP响应错误,错误都会抛出HTTPError类型的异常。
HTTPRedirectHandler用于处理重定向。
HTTPCookieProcessor用于处理Cookie。
ProxyHandler用于设置代理,默认代理为空。
HTTPPasswordMgr用于管理密码,它维护了用户名密码的表。
HTTPBasicAuthHandler用于管理认证,如果一个链接打开时需要认证,那么可以用它来解决认证问题。

今天的练习:

练习5 使用Request函数作为urlopen()的参数,Request()可以帮助携带更多信息

# import urllib.request
# import urllib.parse
# import urllib.error
# import socket

# request = urllib.request.Request('https://python.org')
# response = urllib.request.urlopen(request)
# print(response.read().decode('utf-8'))

练习6 给Request加一些参数

# from urllib import request,parse

# url1 = 'http://httpbin.org/post'
# headers = {
#   'User-Agent': 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)',
#     'Host': 'httpbin.org'
# }
# dict = {
#    'name': 'Germey'
# }
# data = bytes(parse.urlencode(dict),encoding = 'utf-8')
# request1 = request.Request(url=url1,data=data,headers=headers,method='POST')
# response = request.urlopen(request1)
# print(response.read().decode('utf-8'))

练习7 opener类 以及handler的基础使用

from urllib.request import HTTPPasswordMgrWithDefaultRealm,HTTPBasicAuthHandler,build_opener

from urllib.error import URLError

# username = 'username'
# password = 'password'
# url = 'http://localhost:5000/'


# p = HTTPPasswordMgrWithDefaultRealm()
# p.add_password(None,url,username,password)
# auth_handler = HTTPBasicAuthHandler(p)
# opener = build_opener(auth_handler)


# try:
#   result = opener.open(url)
#   html = result.read().decode('utf-8')
#   print(html)
#   pass
# except Exception as e:
#   print(e.reason)

handler这里还不是很明白,明天再看,先把代码模仿着敲了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值