encode()和decode()
- decode英文意思是 解码,encode英文原意 编码
- 字符串在Python内部的表示是unicode编码, 因此,在做编码转换时,通常需要以unicode作为中间编码
- decode()的作用是将其他编码的字符串转换成unicode编码
- encode()的作用是将unicode编码转换成其他编码的字符串
url编码
Url编码通常也被称为百分号编码,在Http协议中参数的传输是**“key=value"这种字典形式的,如果要传多个参数就需要用“&”**符号对键值对进行分割。如”?name1=value1&name2=value2",这样在服务端在收到这种字符串的时候,会用“&”分割出每一个参数,然后再用“=”来分割出参数值。
对于Url中的不引起歧义的字符,编码和不编码是等价的,但是对于上面提到的这些字符,如果不经过编码,那么它们有可能会造成Url语义的不同。因此对于Url而言,只有普通英文字符和数字,特殊字符 $-.+!*’() 还有保留字符,才能出现在未经编码的Url之中。
歧义字符:
- 空格:Url在传输的过程,或者用户在排版的过程,或者文本处理程序在处理Url的过程,都有可能引入无关紧要的空格,或者将那些有意义的空格给去掉。
- 空格:Url在传输的过程,或者用户在排版的过程,或者文本处理程序在处理Url的过程,都有可能引入无关紧要的空格,或者将那些有意义的空格给去掉。
- #:通常用于表示书签或者锚点
- %:百分号本身用作对不安全字符进行编码时使用的特殊字符,因此本身需要编码
- %:百分号本身用作对不安全字符进行编码时使用的特殊字符,因此本身需要编码
URL编码在特殊字符的各个字节前加 % 后,服务端会把紧跟在“%”后的字节当成普通的字节,就是不会把它当成各个参数或键值对的分隔符。
如对url编码感兴趣,[参考](为什么要进行URL编码 - 降瑞雪 - 博客园 (cnblogs.com))
parse模块
parse 模块用于解析URL,支持对URL的 *** 作包括拆分、拼接、编码、解码等
-
解析URL,支持对URL的 *** 作包括拆分、拼接、编码、解码等
-
URL parsing(URL解析)
参考:https://blog.csdn.net/Wjf7496/article/details/109787586
-
URL quoting(URL引用)
参考:https://blog.csdn.net/Wjf7496/article/details/109813106
- urllib.parse.urlencode 将字典中key:value转换为key=编码后的value
- urllib.parse.quote将str数据转换为对应编码
- urllib.parse.unquote将编码后的数据转换为编码前数据
- 获取url参数;parse.urlparse(url)
urllib.parse.urlparse(urlstring, scheme=’’, allow_fragments=True)
urlparse()函数用来解析url,返回一个包含以下这六个元素的属性
parseResult = parse.urlparse(url) #返回元组 (scheme='https', netloc='docs.python.org', path='/3.5/search.html', params='', query='q=parse&check_keywords=yes&area=default', fragment='') param_dict=parse.parse_qs(parseResult.query) {'q': ['parse'], 'check_keywords': ['yes'], 'area': ['default']} param_dict['q'][0] 'parse' #注意:加号会被解码,可能有时并不是我们想要的
- parse_qs()/parse_qsl()
分析url中query字段 该字段通过parse.urlsplit(url).query得到str类型的query字符串
urllib.parse.parse_qs(): 返回字典 其中value是一个列表,保存url中query中相同key的所有value值 因此获取真正的value值还需要列表下标遍历 如query[key][0] urllib.parse.parse_qsl() 返回列表 列表的每一个元素是一个仅含两个元素的元组 每个元组的第一个元素为dict的key,第二个元素为dict的value
-
urllib.parse.quote_plus 是在quote基础上强化了,
会编码 斜线为‘%2F’; 空格为‘ ’编码为‘+’ 等等
- urllib.parse.unquote_plus() 是在unquote基础上强化了
会解码 斜线为‘%2F’; 空格为‘ ’编码为‘+’ 等等
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)