前言:urllib.parse模块按功能分为两大类:URL parsing(url解析) 和URL quoting(url引用)。
一.URL parsing:主要是1.把URL字符串分割成组件2.把组件合并成url字符串
1.1. urllib.parse.urlparse(urlstring, scheme=‘‘, allow_fragments=True) =>操作urlstring字符串生成6个元素组成的一个元祖的ParseResult实体,例 如:ParseResult(scheme=‘http‘, netloc=‘www.cwi.nl:80‘, path=‘/%7Eguido/Python.html‘, params=‘‘, query=‘‘, fragment=‘‘)。
上述一个元祖的ParseResult实体有以下只读属性:
Attribute | Index | Value | Value if not present |
---|---|---|---|
scheme | 0 | URL scheme specifier | empty string |
netloc | 1 | Network location part | empty string |
path | 2 | Hierarchical path | empty string |
params | 3 | Parameters for last path element | empty string |
query | 4 | Query component | empty string |
fragment | 5 | Fragment identifier | empty string |
username | User name | None | |
password | Password | None | |
hostname | Host name (lower case) | None | |
port | Port number as integer, if present | None |
1.2. urllib.parse.urlunparse(parts):主要是把urlparse方法生成的元组重新合并成url字符串。
1.3.urllib.parse.urlsplit(urlstring, scheme=‘‘, allow_fragments=True):功能类似urlparse,但是不拆分参数。
1.4.urllib.parse.urlunsplit(parts):功能类似urlunparse。
1.5.urllib.parse.urljoin(base, url, allow_fragments=True):url是相对地址,就拼接,若是绝对地址就替换base。
1.6.urllib.parse.urldefrag(url):获取url中的Fragment identifier
1.7.urllib.parse.quote(string, safe=‘/‘, encoding=None, errors=None):对url编码
1.8.urllib.parse.unquote(string, encoding=‘utf-8‘, errors=‘replace‘):对url解码
1.9.urllib.parse.urlencode(query, doseq=False, safe=‘‘, encoding=None, errors=None):对url参数编码
二、urllib.request:打开URL的工具类,包括:身份认证、重定向、cookie。
2.1.urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False):打开一个url网站。
url:可以是个字符串也可以是Request object.
data:发送到server的数据.
返回:For http and https urls, this function returns a http.client.HTTPResponse object。
For ftp, file, and data urls and requests explicity handled by legacy URLopener and FancyURLopener classes, this function returns a urllib.response.addinfourl object。
2.2.urllib.request.build_opener([handler, ...]):返回一个OpenerDirector实体。
参数:handlers can be either instances of BaseHandler, or subclasses of BaseHandler。
2.3.类:class urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None):URL request类定义。
url必须是有效的。
data must be a bytes object。
2.4类:Request Objects:属性和方法见api
2.5类:OpenerDirector Objects:属性和方法见api
OpenerDirector.open(url, data=None[, timeout]):与urllib.request.urlopen()方法效果相同。
2.6委托:BaseHandler Objects:属性和方法见api