urlparse和urlsplit函数用法
urlparse和urlsplit:
有时候拿到一个url,想要对这个url中的各个组成部分进行分割,那吗这时候就可以使用urlparse和urlsplit来进行分割。
它会给你url分割为scheme、host、path、query-string、anchor这几部分
from urllib import request,parse
url = 'http://www.mu60.cn/s?python&ChuMu#1'
result = parse.urlparse(url)
print(result)
运行结果:
ParseResult(scheme='http', netloc='www.mu60.cn', path='/s', params='', query='python&ChuMu=abc', fragment='1')
如何我们不想获取那么多给属性我们只想获取某一个我们可以通过属性来获取
#我们就可以通过下面的方法来获取我们想要的
from urllib import request,parse
url = 'http://www.mu60.cn/s?python&ChuMu=abc#1'
result = parse.urlparse(url)
print('scheme:',result.scheme)
print('netloc:',result.netloc)
print('path:',result.path)
print('params:',result.params)
print('query:',result.query)
print('fragment:',result.fragment)
运行结果
scheme: http
netloc: www.mu60.cn
path: /s
params:
query: python&ChuMu=abc
fragment: 1
urlsplit:
其实我们也可以通过urlsplit来完成,也是可以跟urlparse效果一样但是有一点不一样的是urlsplit分割出来的没有params这个属性
from urllib import request,parse
url = 'http://www.mu60.cn/s?python&ChuMu=abc#1'
result = parse.urlsplit(url)
print('scheme:',result.scheme)
print('netloc:',result.netloc)
print('path:',result.path)
print('params:',result.params)
print('query:',result.query)
print('fragment:',result.fragment)
#我们这样运行救会有报错
"""
scheme: http
Traceback (most recent call last):
File "C:/Users/Administrator/PycharmProjects/untitled/python测试/测试2.py", line 8, in <module>
print('params:',result.params)
netloc: www.mu60.cn
AttributeError: 'SplitResult' object has no attribute 'params'
path: /s
"""
我们只要把params这个属性删掉就可以了,这样子也是可以得到分割的属性。
from urllib import request,parse
url = 'http://www.mu60.cn/s?python&ChuMu=abc#1'
result = parse.urlsplit(url)
print(result)
print('scheme:',result.scheme)
print('netloc:',result.netloc)
print('path:',result.path)
print('query:',result.query)
print('fragment:',result.fragment)
运行结果
SplitResult(scheme='http', netloc='www.mu60.cn', path='/s', query='python&ChuMu=abc', fragment='1')
scheme: http
netloc: www.mu60.cn
path: /s
query: python&ChuMu=abc
fragment: 1
urlsplit是没有params这个属性的我们来对比一下
from urllib import request,parse
url = 'http://www.mu60.cn/s?python&ChuMu=abc#1'
result1 = parse.urlsplit(url)
result2 = parse.urlparse(url)
print(result1)
print(result2)
运行结果
SplitResult(scheme='http', netloc='www.mu60.cn', path='/s', query='python&ChuMu=abc', fragment='1')
ParseResult(scheme='http', netloc='www.mu60.cn', path='/s', params='', query='python&ChuMu=abc', fragment='1')
params代表的是什么东西呢,params在网络爬虫和网站开发里面基本上用不到。params是用在哪的来看一下下面的代码就知道了
from urllib import request,parse
#;hello
url = 'http://www.mu60.cn/s;hello?python&ChuMu=abc#1'
result1 = parse.urlparse(url)
result2 = parse.urlsplit(url)
print(result1)
print(result2)
运行结果
ParseResult(scheme='http', netloc='www.mu60.cn', path='/s', params='hello', query='python&ChuMu=abc', fragment='1')
SplitResult(scheme='http', netloc='www.mu60.cn', path='/s;hello', query='python&ChuMu=abc', fragment='1')
在后面的网络爬虫里应该用urlparse还是urlsplin呢!其实用那个都是可以的,你真的要知urlparse多了一个paraams就可以