python自动化接口测试中urllib.parse的使用

首先要知道, urllib.parse 是用来做什么的?

看名字,url , parse, 所以,urllib.parse 定义了url 的标准接口, 实现了url 的各种抽取,解析, 合并,编码, 解码。

另外,官方定义如是:这个模块是一个能把URL字符串拆分成组件,能把组件合并成URL和将一个相对的URL转成一个抽象的URL,从而的到一个基本的URL标准格式。

简单的说就是可以拆分URL,也可以拼接URL,他支持的URL格式为:file、ftp、gopher、hdl、http、https、imap、mailto,mms、news、nntp、prospero、rsync、rtsp、rtspu、sftp、shttp、sip、sips、snews、svn、svn+ssh、telnet、wais、ws、wss。

这个模块默认分为两个类别,URL parsing(URL解析) 和 URL quoting(URL引用)

(一)、URL parsing(URL解析)

urllib.parse.urlparse(urlstring, scheme=”, allow_fragments=True)  : urlparse 函数用于将一个URL 解析成六个部分,返回一个元组。

这里有两点需要学习:URL 按照什么格式或者规则进行解析 & 函数后面的括号中的参数为空的时候如何解析。

首先:URL的标准格式有六个部分: scheme://netloc/path;parameters?query#fragment 

这个格式是需要记住的(标点符号 //    /    ;   ?   #   )(Key 的名字:scheme, netloc, path, parameters, query, fragment)

然后既然返回的是一个元组,那就可以通过 index 来访问这些值。

元组中每一个元素都是一个字符串,可以为空,这六个部分均不能再被分割成更小的部分;

以下为返回的元组元素:

示例如下:

分析URL中的query 组件的函数有两个,根据需要取用不同的函数:

urllib.parse.parse_qs(qs, keep_blank_values=False, strict_parsing=False, encoding=’utf-8’, errors=’replace’)

urllib.parse.parse_qsl(qs, keep_blank_values=False, strict_parsing=False, encoding=’utf-8’, errors=’replace’)

第一个返回的是字典 dict,第二个返回的是列表 list.

如下:

 

urllib.parse.urlsplit(urlstring, scheme=”, allow_fragments=True): 这个函数跟urllib.parse.urlparse() 功能类似,唯一的不同是这个函数不会将 URL 中的param分离出来,就是说urlparse()少一个param 元素,返回的元组元素参照urlparse() 元组表,少了一个param 元素。

urllib.parse.urljoin(base, url, allow_fragments=True) : urljoin函数用于将 基本的URL(base), 和其他的 URL拼成一个完整的URL。