文章目录
- urllib
- request模块
-
- 访问URL
- Request类
- 其他类
- parse模块
-
- 解析URL
- 转义URL
- robots.txt文件
(免费学习推荐:python视频教程)
urllib
urllib
是Python中用来处理URL的工具包,源码位于/Lib/下。它包含了几个模块:用于打开及读写的urls的request
模块、由request
模块引起异常的error
模块、用于解析urls的parse
模块、用于响应处理的response
模块、分析robots.txt文件的robotparser
模块。
注意版本差异。urllib
有3个版本:Python2.X包含urllib
、urllib2
模块,Python3.X把urllib
、urllib2
以及urlparse
合成到urllib
包中,而urllib3
是新增的第三方工具包。若遇到"No module named urllib2"等问题几乎都是Python版本不同导致的。
urllib3
是一个功能强大、条例清晰、用于HTTP客户端的Python库。它提供了许多Python标准库里所没有的特性:压缩编码、连接池、线程安全、SSL/TLS验证、HTTP和SCOCKS代理等。可以通过pip进行安装:pip install urllib3
也可以通过GitHub下载最新代码:
git clone git://github.com/shazow/urllib3.git python setup.py install
urllib3
参考文档:https://urllib3.readthedocs.io/en/latest/
request模块
urllib.request
模块定义了身份认证、重定向、cookies等应用中打开url的函数和类。
再简单介绍下request
包,该包用于高级的非底层的HTTP客户端接口,容错能力比request
模块强大。request
使用的是urllib3,它继承了urllib2的特性,支持HTTP连接保持和连接池,支持使用cookie保持会话、文件上传、自动解压缩、Unicode响应、HTTP(S)代理等。更多具体可参考文档http://requests.readthedocs.io。
下面将介绍urllib.request
模块常用函数和类。
访问URL
一、urlopen()
urllib.request.urlopen(url,data=None,[timeout,]*,cafile=None,capath=None,cadefault=false,context=None)
该函数用于抓取URL数据,十分重要。带有如上所示的参数,除了URL参数外(字符串或Request
对象)其余参数都有默认值。
①URL参数
from urllib import requestwith request.urlopen("http://www.baidu.<strong style="color:transparent">本文来源gao@daima#com搞(%代@#码网@</strong>com") as f: print(f.status) print(f.getheaders())#运行结果如下200[('Bdpagetype', '1'), ('Bdqid', '0x8583c98f0000787e'), ('Cache-Control', 'private'), ('Content-Type', 'text/html;charset=utf-8'), ('Date', 'Fri, 19 Mar 2021 08:26:03 GMT'), ('Expires', 'Fri, 19 Mar 2021 08:25:27 GMT'), ('P3p', 'CP=" OTI DSP COR IVA OUR IND COM "'), ('P3p', 'CP=" OTI DSP COR IVA OUR IND COM "'), ('Server', 'BWS/1.1'), ('Set-Cookie', 'BAIDUID=B050D0981EE3A706D726852655C9FA21:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com'), ('Set-Cookie', 'BIDUPSID=B050D0981EE3A706D726852655C9FA21; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com'), ('Set-Cookie', 'PSTM=1616142363; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com'), ('Set-Cookie', 'BAIDUID=B050D0981EE3A706FA20DF440C89F27F:FG=1; max-age=31536000; expires=Sat, 19-Mar-22 08:26:03 GMT; domain=.baidu.com; path=/; version=1; comment=bd'), ('Set-Cookie', 'BDSVRTM=0; path=/'), ('Set-Cookie', 'BD_HOME=1; path=/'), ('Set-Cookie', 'H_PS_PSSID=33272_33710_33690_33594_33600_33624_33714_33265; path=/; domain=.baidu.com'), ('Traceid', '161614236308368819309620754845011048574'), ('Vary', 'Accept-Encoding'), ('Vary', 'Accept-Encoding'), ('X-Ua-Compatible', 'IE=Edge,chrome=1'), ('Connection', 'close'), ('Transfer-Encoding', 'chunked')]