首先补充一下关于url的组成部分
url是Uniform Resource Locator的简写,统一资源定位符
一个URL由以下几部分构成:
scheme://host:post/path/?query-string=xxxx#anchor
- scheme:代表的是访问的协议,一般为http或https及ftp等。
- host:主机名,域名,比如www.baidu.com
- port:端口号。当你访问一个网站的时候,浏览器默认使用的是80端口。
- path:查找路径。比如www.jianshu.com/trending/now,后面的trending/now就是路径。
- query-string:查询字符串,比如:www.baidu.com/s?wd=python,后面的wd=python就是查询字符串。
- anchor:锚点,后台一般不用管,前端用来做页面定位的。
在浏览器中请求一个url,浏览器会对这个url进行一个编码,除英文数字,数字和部分符号外,其他的全部使用百分号+十六进制码值进行编码。
有时候拿到一个url,想要对这个url中的各个组成部分进行分割,这时可以使用urlparse或者urlsplit来进行分割。示例代码如下:
from urllib import request,parse
url = 'http://www.baidu.com/s?username=zhiliao'
result = parse.urlsplit(url)
# result 2= parse.urlparse(url) //这条语句里面的函数和上面的函数实现的方法基本相同
print(result)
//当然也可以使用下面的打印方法进行逐个输出
print('scheme:',result.scheme)
print('netloc:',result.netloc)
print('path:',result.path)
# print('params:',result.params) //对于urlsplit函数没有这一项输出功能
print('query:',result.query)
print('fragment:',result.fragment)
说明:urlparse和urlsplit基本上是一样的,唯一不同的地方是urlparse比urlsplit多了一个‘params’属性。比如有一个’url’为url = 'http://www.baidu.com/s;hello?wd=python&username=abc#1’那么urlparse函数可以获取到‘hello’,而’urlsplit’不可以获取到。'url’中的params用的比较少。