urllib.parse

解析链接

一、简介 urllib.parse

它定义了处理 URL 的标准接口,例如实现 URL 各部 分的抽取、合并以及链接转换

二、函数介绍

1 urlparse()6

功能:实现URL的识别和分段

(1)代码实例:

from urllib import parse
url1='http://www.baidu.com/index.html;user?id=5#comment'
result=parse.urlparse(url1)
print(type(result))
print(result)

运行结果:

<class 'urllib.parse.ParseResult'>
ParseResult(scheme='http', netloc='www.baidu.com', path='/index.html', params='user', query='id=5', fragment='comment')

(2)定义域值域

url1='http://www.baidu.com/index.html;user?
result=parse.urlparse(url1)
定义域:

URL

参数:
urllib.parse.urlparse(urlstring, scheme=, allow_fragments=True)
urlstring :

待解析的URL

scheme:

默认协议,如果解析URL中有协议时,解析为原有的协议,URL中没有协议,则解析为默认协议。

allow_fragments:

是否忽略fragment,如果被设置为False,fragment部分就会被忽略,它被解析为path,parameter,或者query的一部分,而fragment部分为空。

值域:

(元组)ParseResult对象 一个标准的链接格式:

scheme://netloc/path;params?query#fragment 

;后面是参数

?后面是查询条件 query, 一般用作 GET 类型的 URL;

#后面是锚点,用于直接定位页面内部的下拉位置。

(3)ParseResult中各属性的获取方法

返回结果 ParseResult 实际上是一个元组,我们可以用索引顺序来获取,也可以用属性名获取。

2 urlunparse()

功能:构造URL

(1)代码实例:
from urllib.parse import urlunparse

data=['https','www.baidu.com','index.html','user','id=5','comment']

print(urlunparse(data))
https://www.baidu.com/index.html;user?id=5#comment
(2)定义域值域
定义域:

它接受的参数是一个可迭代对象, 但是它的长度必须是 6, 否则会抛出参数数量不足或者过多的问题,可使用列表元组等数据类型。

值域:

一个包含六个字段的完整URL

3 urlsplit()5

与urlparse()非常相似,只是parmas部分被分到path,只有五个部分

返回结果是 SplitResult , 它其实也是一个元组类型, 既可以用属性获取值,也可以 用索引来获取

4 urlunsplit()

与 urlunparse()类似,它也是将链接各个部分组合成完整链接的方法,传人的参数也是一个可迭 代对象,例如列表、 元组等,唯一的区别是长度必须为 5

5 urljoin()

功能:

(1)我们可以提供一个 base_url (基础链 接 ) 作为第一个参数,将新的链接作为第二个参数,该方法会分析 base_url 的 scheme、 netloc 和 path 这 3 个内容并对新链接缺失的部分进行补充,最后返回结果。

定义域:

基础URL,待补充完整的URL

值域:

补充好scheme,netloc,path的新URL

注意:

ba咒一url 提供了三项内容 scheme、 netloc 和 path。 如果这 3 项在新的链接里不存在, 就予以补充;如果新的链接存在,就使用新的链接的部分。 而 base_url 中的 params 、 query 和 fragment 是不起作用的

6urlencode()字典–字符串

将字典格式转化为URL中查询字符串需要的格式

(1)代码实例:
from urllib.parse import urlencode

params={'name':'yue',
        'age':'21'}
base_url='https://www.baidu.com?'
url=base_url+urlencode(params)
print(url)

运行结果

https://www.baidu.com?name=yue&age=21
(2)定义域:

字典

(3)值域:

字符形式的字典,用于构造URL中的查询字符串。

7parse_qs()字符串–字典

功能:

有了序列化,必然就有反序列化。 如果我们有一串 GET 请求参数,利用 parse_qs()方法, 就可 以将它转回字典

代码实例:
from urllib.parse import parse_qs
query='name=yue&age=21'
dict=parse_qs(query)
print(dict)

运行结果

{'name': ['yue'], 'age': ['21']}
定义域:

URL中的查询字符串

值域:

字典

8 parse_qsl()字符串–元组组成的列表

将参数转化为元组组成的列表

代码实例
from urllib.parse import parse_qsl 
query= 'name=germey&age=22' print(parse_qsl(query)) 

运行结果如下:

[('name’,’germey'), ('age ', '22')] 
定义域:

URL中的查询字符串

值域:

元组组成的列表

summary:

urlencode 将字典序列化为字符串

parse_qs将字符串转化为字典

parse_qsl将字符串转化为元组组成的列表

9 quote()中文–编码

功能:将中文字符转化为URL编码
代码实例
from urllib.parse import quote
from urllib.request import urlopen
keyword='明月'
base_url='https://www.baidu.com?wd='
url=base_url+quote(keyword)
response=urlopen(url)
print(response.read().decode('utf-8'))
定义域:

中文

值域:

格式化可用于URL的中文编码

10 unquote()

解码URL

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值