Python-urllib库parse模块解析链接常用方法

版权声明:本文为博主学习记录,转载请注明出处(https://blog.csdn.net/huishanyu/article/details/80702807)

urlparse()

# urllib.parse.urlparse(urlstring,scheme='',allow_fragments=True)
# urlstring : 这个是必填项,即待解析的URL
result = urlparse('http://www.baidu.com/index.html;user?id=5#comment')
print(type(result),result)

# scheme : 它是默认的协议,只有在URL中不包含scheme信息时生效
result = urlparse('www.baidu.com/index.html;user?id=5#comment',scheme='https')
print(result)

# allow_fragments : 即是否忽略fragment 设置成False就会忽略,它会被解析为path,parameters或者query的一部分,而fragment部分为空
result = urlparse('http://www.baidu.com/index.html;user?id=5#comment',allow_fragments=False)
print(result)

# 返回的结果其实是一个元组,我们可以通过索引来获取,也可以用属性名来获取
# ParseResult的属性 scheme(:// 协议),netloc(/ 域名),path(访问路径),params(; 参数),query(查询条件),fragment(# 锚点)
result = urlparse('http://www.baidu.com/index.html;user?id=5#comment',allow_fragments=False)
print(result.scheme,result[0],result.netloc,result[1],sep='\n')

urlunparse()

# urlunparse() 长度必须为6个参数,否则会抛出参数数量不足或者过多的问题
data = ['http','www.baidu.com','index.html','user','a=6','comment']
print(urlunparse(data))

urlsplit()

# urlsplit() 和urlparse()方法很相似,不再解析params 参数
result = urlsplit('http://www.baidu.com/index.html;user?id=5#comment')
print(result)
# 返回的结果其实也是一个元组,我们可以通过索引来获取,也可以用属性名来获取
# SplitResult的属性 scheme(:// 协议),netloc(/ 域名),path(访问路径),query(查询条件),fragment(# 锚点)
result = urlparse('http://www.baidu.com/index.html;user?id=5#comment',allow_fragments=False)
print(result.scheme,result[0])

urlunsplit()

# urlunsplit() 和urlunparse()方法很相似,只不过长度变成5个参数
data = ['http','www.baidu.com','index.html','a=6','comment']
print(urlunsplit(data))

urljoin()

# urljoin() 也是合并链接的一种方式,相比之前俩种方法,没有之前特定的指定参数对象的长度
# urljoin()方法提供俩个参数,base_url(基础链接)作为第一个参数,讲新的链接作为第二个参数,该方法会分析base_url的scheme,netloc和path
# 这三个内容并对新链接确实的部分进行补充,最后返回结果
print(urljoin('http://www.baidu.com','https://cuiqingcai.com/FAQ.html'))
print(urljoin('http://www.baidu.com/about.html','https://cuiqingcai.com/FAQ.html'))
print(urljoin('http://www.baidu.com','FAQ.html'))
print(urljoin('http://www.baidu.com/about.html','https://cuiqingcai.com/FAQ.html?question=2'))
print(urljoin('http://www.baidu.com?wd=abc','https://cuiqingcai.com/index.php'))
print(urljoin('http://www.baidu.com','?category=2#comment'))
print(urljoin('www.baidu.com','?category=2#comment'))
print(urljoin('www.baidu.com#comment','?category=2'))

urlencode()

# urlencode() 序列化字典类型转换为请求类型
params = {
    'name' : 'germey',
    'age' : 22
}
base_url = 'http://www.baidu.com?'
url = base_url + urlencode(params)
print(url)

parse_qs()

# parse_qs() 反序列化将请求参数转回字典参数
from urllib.parse import parse_qs

query = 'name=germey&age=22'
params = parse_qs(query)
print(params)

parse_qs1()

# parse_qs1() 它用于把参数转化为元组组成的列表
from urllib.parse import parse_qsl

query = 'name=germey&age=22'
params = parse_qsl(query)
print(params)

quote()

# quote() 该方法可以将内容转化为URL编码的格式,URL中带有中文参数时,又是可能会导致乱码的问题,用这个方法可以将中文字符转化为URL编码
from urllib.parse import quote

keyword = '壁纸'
url = 'http://www.baidu.coms?wd='+quote(keyword)
print(url)

unquote()

# unquote() 它对应上面的方法, 可以进行URL解码
from urllib.parse import unquote

url = 'http://www.baidu.coms?wd=%E5%A3%81%E7%BA%B8'
print(unquote(url))

本文用于自己学习记录,也参考了很多前辈的博客,如有不当的地方,还请各位大佬多多指教,手动ღ( ´・ᴗ・` )比心

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值