urllib.parse模块在功能上分为两大类:URL parsing(URL解析)和URL quoting(URL引用)
上一节已经介绍了url解析 本节介绍url引用
URL解析传送门(https://blog.csdn.net/Wjf7496/article/details/109787586)

(1)quote()/quote_plus()

上一节介绍的urllib.parse.urlencode()函数是对一个字典或者sequence of 'two-tuple'
进行编码
若只是对单个str或者bytes编码则需要使用quote()/quote_plus()函数定义
urllib.parse.quote(string,safe='/',encoding=None,errors=None)string:str或bytes型数据其中下划线,句号,逗号,斜线和字母数字这类符号不需要转化,其它的则需要转化。另外URL不能使用的字符(如中文)前会被加上百分号(%)同时转换成十六进制,即<%xx>的形式safe:safe字符串包含一些不能转换的字符,默认是斜线(/)。encoding、errors:这两个参数指定如何处理str.encode()方法接受的非ascii字符二者的区别在于对特殊字符编码的方式不一样 如quote()      不编码斜线;        空格‘ ’编码为‘%20’quote_plus() 会编码斜线为‘%2F’; 空格‘ ’编码为‘+’等等>>> from urllib import parse
>>> parse.quote('a&b/c')
'a%26b/c'
>>> parse.quote_plus('a&b/c')
'a%26b%2Fc'>>> parse.quote('a&b c')
'a%26b%20c'
>>> parse.quote_plus('a&b c')
'a%26b+c'

编码后的url传递后接受完毕就要解码,urllib提供了unquote(),urluquote_plus()两个函数实现url解码,没有urldecode()!

(2)unquote()/unquote_plus()

unquote()unquote(string, encoding='utf-8', errors='replace')不解码加号,默认string的编码utf-8
unquote_plus() unquote_plus(string, encoding='utf-8', errors='replace')加号解码为空格 默认string的编码utf-8二者的返回值类型都是str
注意这里的encoding指定的是string参数的编码格式,不是终端编码格式from urllib import parse
print(parse.unquote('1+2'))# '1+2'
print(parse.unquote_plus('1+2'))# '1 2'终端utf-8:
>>> parse.quote('魔兽')
'%E9%AD%94%E5%85%BD'
>>> parse.unquote('%E9%AD%94%E5%85%BD')
'魔兽'
>>> parse.unquote(parse.quote('魔兽'))
'魔兽'urlencode时quote()就是把字符串'魔兽'转车utf-8编码'\xe9\xad\x94\xe5\x85\xbd'
然后把\x替换成%得到'%E9%AD%94%E5%85%BD'
urldecode时unquote()这个函数的输出是对应中文'魔兽'在utf-8下的编码'\xe9\xad\x94\xe5\x85\xbd'得到中文'魔兽'那么如果终端是gbk编码的,解码utf-8的字符串需要指定encoding='utf-8'输出,否则就乱码
同样在终端utf-8下解码gbk的字符串也会乱码,需要指定参数encoding='gbk'
因为quote()unquote()默认编码都是utf-8终端utf-8编码:
'魔兽'的gbk编码是'\xc4\xa7\xca\xde'>>> parse.unquote('%C4%A7%CA%DE')
'ħ��'
>>> parse.unquote('%C4%A7%CA%DE',encoding='gbk')
'魔兽'

(3)quote_from_bytes()/unquote_from_bytes()

(1)quote_from_bytes()类似于quote(),不过它只接受bytes,并且不执行string到bytes的编码str 需要先转成bytes 两种办法:str.encode(encoding)或bytes(str,encoding)quote(string,safe,encoding,errors) 与
quote_from_bytes(str.encode(encoding),safe)等价。`(2)unquote_to_bytes(string)类似于unquote(),不过它接受一个str或者bytes,返回一个bytes object

parse模块包含的常用方法总结(https://blog.csdn.net/qq_36759224/article/details/99711754)

urllib库(三)parse模块:quote()/quote_plus(),unquote()/unquote_plus(),quote_from_bytes()相关推荐

  1. 第三部分 基本库的使用(urllib库, requests库, re库)

    Python提供了功能齐全的类库来完成网络请求.基础库的HTTP库有urllib, httplib2, requests, treq等. 比如说rullib库,不用关心底层怎么实现的,只要关心请求的链 ...

  2. python中urllib.parse啥意思_python-urllib.parse模块简述

    前言 小编最近在编写接口自动化测试用例的过程中,需要将get请求url中的部分参数替换成预设的数据,将url中的具有时效性的auth替换成auth生成方法返回值.经过一番调研,最后选取了python的 ...

  3. python中的urllib库_Python2/3中的urllib库

    介绍urllib库在不同版本的Python中的变动,并以Python3.X讲解urllib库的相关用法. urllib库对照速查表 Python2.X Python3.X urllib urllib. ...

  4. urllib库的使用(一篇就够了)

    在Python2中,有urllib和urllib2两个库来实现请求的发送,而在Python3中,统一为了urllib,其官方文档链接为:https://docs.python.org/3/librar ...

  5. python3 urlencode_Python2和Python3中urllib库中urlencode的使用注意事项

    前言 在Python中,我们通常使用urllib中的urlencode方法将字典编码,用于提交数据给url等操作,但是在Python2和Python3中urllib模块中所提供的urlencode的包 ...

  6. python3一爬虫库url_python3爬虫之Urllib库(一)

    在python2里边,用urllib库和urllib2库来实现请求的发送,但是在python3种在也不用那么麻烦了,因为只有一个库了:Urllib. urllib库是python的标准库,简而言之就是 ...

  7. 爬虫 :urllib库的用法,关于 request,parse模块总结

    urllib库 它是python内置的请求库,包括 request ,error ,parse,robotparse. 这里主要介绍request 和parse模块. request 它是HTTP请求 ...

  8. urllib库(二)parse模块:urlparse()/urlsplit(),parse_qs()/parse_qsl(),urlunparse()/urlunsplit(),urlencode()

    urllib.parse模块用于解析URL,支持对URL的操作包括拆分.拼接.编码.解码等. urllib.parse模块在功能上分为两大类:URL parsing(URL解析)和URL quotin ...

  9. 爬虫urllib库parse模块的urlparse详解

    一 点睛 urllib库里还提供了parse这个模块,它定义了处理URL的标准接口,例如实现URL各部分的抽取.合并以及链接转换. 它支持如下协议的URL处理:file.ftp.gopher.hdl. ...

  10. Python之urllib爬虫-request模块和parse模块详解

    文章目录 urllib request模块 访问URL Request类 其他类 parse模块 解析URL 转义URL robots.txt文件 urllib urllib是Python中用来处理U ...

最新文章

  1. c++与Delphi中的类型转换
  2. jmeter控制器--if控制器
  3. 通过极简模拟框架让你了解ASP.NET Core MVC框架的设计与实现[中篇]:请求响应
  4. 离群点检测方法_干货 :时间序列异常检测
  5. Intellij_idea-15 常用快捷键
  6. 数据结构--二叉树与森林记事本
  7. 404是什么意思,404错误页面有什么用?
  8. 【官方教程】使用Quick-Cocos2d-x搭建一个横版过关游戏(四)
  9. 二维数组 之 蛇形遍历
  10. mysql 格式化函数总结_Mysql字符串处理函数详细介绍、总结
  11. Facebook MySQL工程师吐槽MemSQL:MySQL比你们快无数倍
  12. 为什么别人总是把你往“坏处想”?浅谈如何更好地与项目团队中的“网友”更好地交流
  13. 通过监控Nginx日志来实时屏蔽高频恶意访问的IP
  14. 企业邮局在koomail里的设置方法
  15. 计算机网络 考博试题,计算机网络考博题集及参考答案9
  16. 【Google Cloud】账单告警信息推送至第三方
  17. JVM监控及诊断工具命令行篇之jps
  18. 全球及中国第五代移动通信技术(5G)产业建设现状与应用发展方向分析报告2022年
  19. lcds- data management part Unable to access UserTransaction in DataService
  20. centos8搭建owncloud

热门文章

  1. python sorted怎么排序_Python sorted排序方法怎么用
  2. 教程向 | 安装 地表最强IDE---Microsoft Visual Studio 2022
  3. C语言 矩阵相似度
  4. 自动执行bash被拒绝 提示/bin/sh: /test.sh: Permission denied
  5. Delphi xe5 StyleBook的用法(待续)
  6. android 简历 android 3年 上海.doc
  7. 什么是万物互联(IoE)?与物联网(IoT)的区别是什么?
  8. phpstudy快速搭建网站步骤(手把手教你搭建)
  9. Mac 复制 粘贴问题
  10. 【ADNI】基本概念整理