会飞的鱼

一个普普通通的
博主
首页 » python爬虫基础 » urlparse和urlsplit函数用法

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就可以

文章如无特别注明均为原创! 作者: ChuMu, 转载或复制请以 超链接形式 并注明出处 ChuMu
原文地址《 urlparse和urlsplit函数用法》发布于2019-7-29

分享到:
打赏

评论

游客

看不清楚?点图切换
切换注册

登录

您也可以使用第三方帐号快捷登录

切换登录

注册