python爬虫-基本库-urllib库(常用速查)
urllib库库的用途四个基本模块request模块error模块parse模块robotparser模块库的用途实现HTTP请求的发送扩展基本HTTP库有urllib、requests、httpx等四个基本模块request 基本的HTTP请求模块error 异常处理模块parse 工具模块提供URL的处理方法robotparser 识别网站的robost.txt文件request模块urlopen(function)defurlopen(url:str|Request,data:_DataTypeNone,timeout:float|Nonesocket._GLOBAL_DEFAULT_TIMEOUT,*,cafile:str|NoneNone,capath:str|NoneNone,cadefault:boolFalse,context:SSLContext|NoneNone)-_UrlopenRet只能处理基本的请求如果要添加详细的系你想需要用下面的Request类来构建请求RequestclassRequest(url:str,# 必传其他参数可选data:_DataTypeNone,# 必须传bytes类型如果是字典类型先用urllib.parse.urlencode进行编码headers:MutableMapping[str,str]{},# 字典origin_req_host:str|NoneNone,unverifiable:boolFalse,method:str|NoneNone)更高级的用法handler类有几个子类HTTPDefaultErrorHandler用于处理HTTP响应错误HTTPRedirecHandler用于处理重定向HTTPCookieProcessor用于处理CookieProxyHandler用于设置代理代理默认为空HTTPasswordMgr用于管理密码它维护着用户名密码的对照表HTTPBasicAuthHandler用于管理认证 如果一个链接在打开时需要认证用这个类来解决Opener类验证fromurllib.requestimportHTTPPasswordMgrWithDefaultRealm,HTTPBasicAuthHandler,build_openerfromurllib.errorimportURLError usernameadminpasswordadminurlhttps://ssr3.scrape.center/pHTTPPasswordMgrWithDefaultRealm()p.add_password(None,url,username,password)auth_handlerHTTPBasicAuthHandler(p)openerbuild_opener(auth_handler)try:resultopener.open(url)htmlresult.read().decode(utf-8)print(html)exceptURLErrorase:print(e.reason)代理fromurllib.errorimportURLErrorfromurllib.requestimportProxyHandler,build_opener proxy_handlerProxyHandler({http:http://127.0.0.1:8080,https:https://127.0.0.1:8080})openerbuild_opener(proxy_handler)try:reponseopener.open(https://www.baidu.com)print(reponse.read().decode(utf-8))exceptURLErrorase:print(e.reason)Cookieimporthttp.cookiejar,urllib.request# 1.创建罐子cookiehttp.cookiejar.CookieJar()# 2.再用罐子造处理器handlerurllib.request.HTTPCookieProcessor(cookie)# 3.创建openeropenerurllib.request.build_opener(handler)# 4.执行open函数responseopener.open(https://www.baidu.com)# 5.遍历输出foritemincookie:print(item.nameitem.value)error模块URlErrorURlError.reasonHTTPErrorHTTPError .code、HTTPError .reason、HTTPError .headersparse模块常用的方法urlparse解析url生成结果是一个6字段的命名元组(function)defurlparse(url:str,scheme:str,allow_fragments:boolTrue)-ParseResult:...defurlparse(url:bytes|bytearray|None,scheme:bytes|bytearray|Literal[]|None,allow_fragments:boolTrue)-ParseResultBytes:...urlunparse是上一个方法的逆方法用于构造url接受的参数必须是6字段 的可迭代对象urlsplit类似与第一种方法区别在于合并path和params返回一个5字段的命名元组urlunsplit上一个方法的逆urljoin第一个参数提供base链之包含scheme、netloc、path第二个参数为新链方法会分析新链并用基链补充后返回结果urlencode常用语构造GET请求参数可以将一个字典或者含一对元素序列的系列构造为GET请求参数(function)defurlencode(query:_QueryType,doseq:boolFalse,safe:str|bytes,encoding:str|NoneNone,errors:str|NoneNone,quote_via:_QuoteViaquote_plus)-strparse_qs上一个方法的逆返回字典parse_qsl与上一个方法类似返回序列quote对中文等语言的请求参数进行编码可以避免乱码问题unquote上一个方法的逆对URL编码进行解码robotparser模块用于分析网站的Robots协议协议通常是一个叫做robots.txt的文本文件一般放在网站的根目录下搜索爬虫在访问一个站点时首先会检查这个站点根目录下是否存在robots.txt文件如果存在就会根据其中定义的爬取范围来爬取。如果没有找到这个文件搜索爬虫便会访问所有可直接访问的页面