urllib.parse - 将URL解析为组件

urllib.parse定义了一个标准接口,用于在组件中解析统一资源定位符(URL)字符串(寻址方案,网络位置,路径等),将组件组合回URL字符串,并将“相对URL”转换为绝对URL给出“基本URL”。

该模块旨在匹配相对统一资源定位器上的Internet RFC。它支持下列URL方案:fileftpgopherhdlhttphttpsimapmailtomms, newsnntpprosperorsyncrtsprtspusftp, shttpsipsipssnewssvnsvn+sshtelnet, waiswswss

urllib.parse模块定义了分为两大类的功能:URL解析和URL引用。

URL解析

URL解析功能侧重于将URL字符串拆分为其组件,或者将URL组件组合为URL字符串。

urllib.parse.urlparse(urlstring,scheme ='',allow_fragments = True )

将URL解析为六个组件,返回一个6个元素的元组,对应URL的一般结构:scheme://netloc/path;parameters?query#fragment。每个元组项都是一个字符串,可能为空。组件不会以较小的部分分解(例如,网络位置是单个字符串),并且不会展开%escapes。如上所示的分隔符不是结果的一部分,除了路径组件中的前导斜杠,如果存在则保留。例如:

>>> from urllib.parse import urlparse
>>> o = urlparse('http://www.cwi.nl:80/%7Eguido/Python.html')
>>> o
ParseResult(scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='')
>>> o.scheme
'http'
>>> o.port
80
>>> o.geturl()
'http://www.cwi.nl:80/%7Eguido/Python.html'

只有在'//'正确引入的情况下, urlparse才会识别netloc。否则,假定输入是一个相对URL,将以路径组件开始

 >>> from urllib.parse import urlparse>>> urlparse('//www.cwi.nl:80/%7Eguido/Python.html')ParseResult(scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='')>>> urlparse('www.cwi.nl/%7Eguido/Python.html')ParseResult(scheme='', netloc='', path='www.cwi.nl/%7Eguido/Python.html', params='', query='', fragment='')>>> urlparse('help/Python.html')ParseResult(scheme='', netloc='', path='help/Python.html', params='', query='', fragment='')

scheme参数给出了默认的寻址方案,只有在URL没有指定寻址方案时才使用。它应该是与urlstring相同的类型(文本或字节),只是默认值''总是允许的,并在适当时自动转换为''

如果allow_fragments参数为false,则无法识别片段标识符。相反,它们被解析为路径,参数或查询组件的一部分,并fragment在返回值中设置为空字符串。

返回值是一个元组,这样我们可以通过索引或者吗命名属性访问,如下:

属性 索引 Value if not present
scheme 0 协议 scheme参数
netloc 1 网络位置部分 空字符串
path 2 分层路径 空字符串
params 3 最后一个路径元素的参数 空字符串
query 4 查询 空字符串
fragment 5 信息片段 空字符串
username   用户名 None
password   密码 None
hostname   主机名 None
port   端口号 None

如果在URL中指定了无效端口,则读取该port属性将引发ValueError异常。

netloc属性中不匹配的方括号将引发ValueError。

与所有命名元组的情况一样,子类还有一些特别有用的附加方法和属性。一种这样的方法是_replace()。该_replace()方法将返回一个新的ParseResult对象,用新值替换指定的字段。

 >>> from urllib.parse import urlparse>>> u = urlparse('//www.cwi.nl:80/%7Eguido/Python.html')>>> uParseResult(scheme='', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='')>>> u._replace(scheme='http')ParseResult(scheme='http', netloc='www.cwi.nl:80', path='/%7Eguido/Python.html', params='', query='', fragment='')

urllib.parse.parse_qs(qs,keep_blank_values = False,strict_parsing = False,encoding ='utf-8',errors ='replace',max_num_fields = None )

解析作为字符串参数给出的查询字符串(类型为 application / x-www-form-urlencoded的数据)。数据作为字典返回。字典键是唯一的查询变量名称,值是每个名称的值列表。

可选参数keep_blank_values是一个标志,指示百分比编码查询中的空值是否应被视为空字符串。true值表示空格应保留为空字符串。默认的false值表示将忽略空白值并将其视为未包含它们。

可选参数strict_parsing是一个标志,指示如何处理解析错误。如果为false(默认值),则会以静默方式忽略错误。如果为true,则错误会引发ValueError异常。

可选的编码和错误参数指定如何将百分比编码的序列解码为Unicode字符,正如 bytes.decode()方法所接受的那样。

可选参数max_num_fields是要读取的字段的最大数量。如果设置,则如果读取的字段超过max_num_fields,则抛出ValueError。

使用urllib.parse.urlencode()函数(doseq参数设置为True)将这些字典转换成查询字符串。

urllib.parse.parse_qsl(qs,keep_blank_values = False,strict_parsing = False,encoding ='utf-8',errors ='replace',max_num_fields = None )

将给定的查询字符串解析为字符串参数(类型为application/x-www-form-urlencoded的数据)。数据作为名称、值对列表返回。

可选参数keep_blank_values是一个标志,指示百分比编码的查询中的空白值是否应该被视为空白字符串。true值指示空白应保留为空白字符串。默认的false值表示要忽略空白值,并将其视为未包含。

可选参数strict_parser是一个标志,指示如何处理解析错误。如果为false(默认值),错误将被默认忽略。如果为真,错误将引发ValueError异常。

可选的encoding 和errors参数指定如何将百分比编码的序列解码为Unicode字符,正如bytes.decode()方法所接受的那样。

可选参数max_num_fields是要读取的字段的最大数量。如果设置,则如果读取的字段超过max_num_fields,则抛出ValueError。

使用urllib.parse.urlencode()函数将这些对列表转换为查询字符串。

urllib.parse.urlsplit(urlstring, scheme='', allow_fragments=True)

这类似于urlparse(),但不会从URL中分割参数。如果需要将允许参数应用于URL路径部分的每个段的最新URL语法(请参阅RFC 2396),则通常应该使用该方法而不是urlparse()。需要一个单独的函数来分离路径段和参数。这个函数返回5个(对比 urlparse没有params)元素的元组:

(addressing scheme, network location, path, query, fragment identifier)

python3 url解析 urllib.parse.urlparse 库简介相关推荐

  1. python3中的urllib.parse的常用方法

    将URL按一定的格式进行拆分 使用 urllib.parse.urlparse将url分为6个部分,返回一个包含6个字符串项目的元组:协议.位置.路径.参数.查询.片段 参照官方地址:https:// ...

  2. Python3 URL解析库 — urlparse

    解析一个 URL 获得各个概念所对应的值在 Python 中显得很简单, Python3 中将 urllib2.urlparse 和 robotparse 并入了 urllib 模块中, 所以原本在 ...

  3. qs—对象序列化为查询参数和URL解析成对象的库

    安装 npm install qs 使用 let qs = require('qs') // 或者 import qs from 'qs' 方法 对象序列化为URL查询参数 let obj = {a: ...

  4. python3 url 提取 ip 端口 协议

    实例: from urllib.parse import urlparseurl = 'http://www.baidu.com:80' _url = urlparse(url) hostname = ...

  5. 详解Python3的urllib.parse.urlencode函数

    参考资料: Python3的urllib.parse常用函数小结 data=bytes(urllib.parse.urlencode({"name":"Jack" ...

  6. Python3 URL格式化url解析url提取参数

    我们一般见到的url地址都是字符串形式,例如: http://api.bilibili.com/x/web-interface/view?aid=44699780 请求协议: http 请求域名:ap ...

  7. Python3的urllib.parse常用函数小结

    2019独角兽企业重金招聘Python工程师标准>>> 1.获取url参数 from urllib import parseurl = 'https://docs.python.or ...

  8. pythonurllib模块-python3之模块urllib

    urllib是python内置的HTTP请求库,无需安装即可使用,它包含了4个模块: request:它是最基本的http请求模块,用来模拟发送请求 error:异常处理模块,如果出现错误可以捕获这些 ...

  9. python的urllib.parse用法

    urllib.parse解析 url:urllib.parse.urlparse(url, scheme='', allow_fragments=True) 简单的使用: urlparse from ...

最新文章

  1. Java学习总结:49(字符缓冲流:BufferedReader)
  2. 用Scrum敏捷开发工具Leangoo做Sprint迭代管理
  3. 辅助模块加速收敛,精度大幅提升 移动端实时的NanoDet-Plus来了
  4. 當前主流防拷光碟的備份
  5. openssl生成rsa密钥对和密钥格式转换
  6. Linux进阶之路————CentOS网络配置
  7. C#LeetCode刷题之#859-亲密字符串​​​​​​​​​​​​​​(Buddy Strings)
  8. 【CCF】201609-1 最大波动
  9. UOJ#218. 【UNR #1】火车管理 线段树 主席树
  10. 苹果又遭集体诉讼,网友拍手:干得漂亮......
  11. pd虚拟机 17.1.2 Intel核心Mac专用版
  12. Spring+Mybatis+SpringMVC后台与前台分页展示实例(附工程)(转)
  13. 原油期货开户条件和流程是什么?
  14. 媒体在计算机科学中的两种含义,多媒体技术应用思考与练习题.doc
  15. pod、pvc删不掉怎么办?
  16. 谷歌:民主国家搜索引擎的消费监控
  17. linux驱动文件目录
  18. 阿里云centos6静默安装oracle11G
  19. 【HTML期末学生大作业】 制作一个简单HTML宠物网页(HTML+CSS)
  20. 串口通信数据格式与解析

热门文章

  1. PHP连接redis并执行redis相关命令的方法详解
  2. 两性离子洗涤剂的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  3. 使用js转换数据库时间类型
  4. 二叉树的构造以及基本操作
  5. 随机变量的相关性与独立性
  6. 大坑:c++如何输入带空格的字符串?
  7. GitHub操作流程
  8. 俄语33个字母+编程打印俄语字母表
  9. Android: 主动抛出异常调试
  10. 雅虎财经数据python 网络爬虫stock股票 用 Python 通过雅虎财经获取股票数据