urllib是python3 网络爬虫的核心模块,主要有以下功能:网页请求、响应获取、代理IP设置、cookie设置、异常处理、URL解析等。爬虫所需要的功能,基本上在urllib中都能找到。
urllib中主要有这4个模块:request,error,parse,robotparser。而最重要的就是request模块。
request:基本的HTTP请求模块,用来模拟发送请求;
error:异常处理模块,如果出现请求错误,用来捕获异常,然后重试或者进行其他操作;
parse:一个工具模块,提供了许多URL处理方法;
robotparser:识别网站里的robot.txt文件,判断哪些网站可以爬,很少用到。
一、发送请求
urlopen模块提供了基本的构造HTTP请求方法,利用它可以模拟浏览器的一个请求发起的过程,同时它还有处理授权验证、重定向、浏览器Cookies以及其他内容。
# import urllib.request
#
# response = urllib.request.urlopen("https://www.zdaye.com")
# print(response.read().decode("utf-8"))
二、Hander工具
可以理解为各种处理器,处理登录验证,处理Cookies,处理代理设置,利用它几乎可以做到HTTP请求中的所有事情。
HTTPDefaultErrorHandler:处理服务器响应错误;
HTTPRedirectHandler:用于重定向;
HTTPCookieProcessor:用于处理Cookies;
ProxyHandler:用于设置代理IP,默认代理IP是空;
HTTPPasswordMgr:用于管理密码,它维护了用户名和密码的表;
HTTPBasicAuthHandler:用于管理认证,如果一个连接打开时需要认证,可以用它来解决认证问题;
三、异常处理
# URLError类,通过他能捕捉错误原因进行处理;
# try :
# except URLError as e:
# print(e.reason)
#HTTPError类,专门处理HTTP请求错误
四、解析链接
urllib库里提供了parse模块,它定义了处理URL的标准接口。主要有一下几种方法:urlparse(),urlunparse(),urlsplit(),urlunspilt(),urljoin(),urlencode(),parse_qs(),parse_qsl(),quote(),unquote(),具体使用方法由于篇幅原因,就不一一介绍了。