Python urlparse模块
Python urlparse模块
urlparse 模块简介
urlparse模块用于把url解析为各个组件,支持file,ftp,http,https,imap,mailto,mms,news,nntp,prospero,rtsp,sftp,shttp,sip,svn+ssh,telnet等几乎所有的形式,在Python3中,该模块放置在urllib.parse中了。
函数说明
1.urlparse()函数
>>> from urllib.parse import urlparse
>>> urls = urlparse('https://www.cnblogs.com/fuhj02/archive/2010/12/07/1898557.html')
>>> urls
ParseResult(scheme='https', netloc='www.cnblogs.com', path='/fuhj02/archive/2010/12/07/1898557.html', params='', query='', fragment='')
>>> dir(urls)
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__module__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__slots__', '__str__', '__subclasshook__', '_asdict', '_encoded_counterpart', '_fields', '_hostinfo', '_make', '_replace', '_source', '_userinfo', 'count', 'encode', 'fragment', 'geturl', 'hostname', 'index', 'netloc', 'params', 'password', 'path', 'port', 'query', 'scheme', 'username']
>>> urls.hostname
'www.cnblogs.com'
该函数将一个url字符串分解为6个元素,以元组的形式返回。这与URL的一般结构相关:scheme://netloc//path;parameters?query#fragment解析得到的每个元素都是一个字符串,有的元素可能为空,除了返回这6个元素外,返回的对象还包含了一些属性:username、password、hostname、port等,我们可以通过Python的内置函数dir()来查看其具有的属性和方法。
注意:若要得到正确的nerloc值,url必须以//开头,否则会被归到path值里去。例如:
>>> another = urlparse('www.cnblogs.com/fuhj02/archive/2010/12/07/1898557.html')
>>> another
ParseResult(scheme='', netloc='', path='www.cnblogs.com/fuhj02/archive/2010/12/07/1898557.html', params='', query='', fragment='')
其实,返回的结果是tuple子类的一个实例,该类具有如下的只读属性:

2.urlunparse()函数
>>> from urllib.parse import urlunparse
>>> urlunparse(urls)
'https://www.cnblogs.com/fuhj02/archive/2010/12/07/1898557.html'
该函数作用是把urlparse()分解的元素再拼合还原为一个url,该函数的参数可以是任意的六元组。
3.urlsplit()函数
>>> from urllib.parse import urlsplit
>>> urlsplit('https://www.cnblogs.com/fuhj02/archive/2010/12/07/1898557.html')
SplitResult(scheme='https', netloc='www.cnblogs.com', path='/fuhj02/archive/2010/12/07/1898557.html', query='', fragment='')
该函数与urlparse()类似,不过返回的是一个5元素的元组,不包括params。
4.urlunsplit()函数,此函数是将urlsplit函数分解的元素再组合起来。
5.urljoin()函数
>>> from urllib.parse import urljoin
>>> urljoin('http://www.baidu.com', 'wenku.faq.html')
'http://www.baidu.com/wenku.faq.html'
该函数基于一个base url和另外一个url构造一个绝对url,如上所示。注意:如果参数中的url为绝对路径的URL(即以//或scheme://开始),那么url的hostname和scheme将会出现在结果中,如下所示:
>>> urljoin('https://www.baidu.com/', 'https://blog.csdn.net/timeless_go/article/details/78489716')
'https://blog.csdn.net/timeless_go/article/details/78489716'
>>> urljoin('http://wiki.huihoo.com/wiki/', 'OpenERP#.E5.AE.89.E8.A3.85')
'http://wiki.huihoo.com/wiki/OpenERP#.E5.AE.89.E8.A3.85'
其余方法不再挨着介绍,直接查看源代码即可。
Python urlparse模块的更多相关文章
- python 中 urlparse 模块介绍
urlparse模块主要是用于解析url中的参数 对url按照一定格式进行 拆分或拼接 1.urlparse.urlparse 将url分为6个部分,返回一个包含6个字符串项目的元组:协议.位置.路 ...
- python学习——urlparse模块
urlparse模块: 1.urlparse() 具体程序及结果如下: >>> url = 'http://i.cnblogs.com/EditPosts.aspx?opt=1'&g ...
- Python 主要模块和常用方法简览
******************** PY核心模块方法 ******************** 文件系统功能 os模块 目录: chdir() :改变工作目录 chroot ...
- python 各模块
01 关于本书 02 代码约定 03 关于例子 04 如何联系我们 1 核心模块 11 介绍 111 内建函数和异常 112 操作系统接口模块 113 类型支持模块 114 正则表达式 115 语言支 ...
- python 常用模块及方法
******************** PY核心模块方法 ******************** os模块: os.remove() 删除文件 os.unlink() ...
- Python主要模块和常用方法简览
原文地址:http://blog.csdn.net/hwhjava/article/details/22284399 PY核心模块方法1. os模块: os.remove() #删除文件 os.unl ...
- Urlparse模块
urlparse模块主要是把url拆分为6部分,并返回元组.并且可以把拆分后的部分再组成一个url.主要有函数有urljoin.urlsplit.urlunsplit.urlparse等. urlpa ...
- urlparse模块(专门用来解析URL格式)
# -*- coding: utf-8 -*- #python 27 #xiaodeng #urlparse模块(专门用来解析URL格式) #URL格式: #protocol ://hostname[ ...
- python 主要模块和方法
******************** PY核心模块方法 ******************** os模块: os.remove() 删除文件 os.unlink() 删除文件 os.rename ...
随机推荐
- 【原创】Odoo开发文档学习之:ORM API接口(ORM API)(边Google翻译边学习)
官方ORM API开发文档:https://www.odoo.com/documentation/10.0/reference/orm.html Recordsets(记录集) New in vers ...
- TCP三次握手和四次挥手以及11种状态
1.三次握手 置位概念:根据TCP的包头字段,存在3个重要的标识ACK.SYN.FIN ACK:表示验证字段 SYN:位数置1,表示建立TCP连接 FIN:位数置1,表示断开TCP连接 三次握手过程说 ...
- 「Leetcode」976. Largest Perimeter Triangle(C++)
分析 好久不刷题真的思维僵化,要考虑到这样一个结论:如果递增的三个数\(x_i,x_{i+1},x_{i+2}\)不符合题意,那么最大的两边之差一定大于等于第一条边,那么任何比第一条边小的都不能成立. ...
- Openwrt之移动硬盘ext3/ext4格式化工具
在给openwrt挂载移动硬盘的时候,最好是ext3/ext4方式,但在windows下苦于无法找到合适的工具进行格式化. 踅摸了半天,终于找到了它:MiniTool Partion Wizard ...
- AtCoder Regular Contest 101 D - Median of Medians
二分答案 然后前缀和+树状数组来判断这个答案是否大于等于数 如果我们对于一个查询,如果小于这个数令为1,大于这个数领为-1 将所有前缀和放在树状数组中,就可以查询所有sum_{l} < sum_ ...
- 个人安装ss的一个记录
在ubuntu16.04安装ss服务.由于lantern最近极其不稳定(我还花钱的qaq),经常断联以至于几乎废了,莫得办法,只好花钱搭一个了orz...呵,贫穷.... 安装shadowsocks ...
- JAVA基础学习之路(十一)引用传递
引用传递: 不同栈内存可以指向同一块堆内存,不同栈内存可以对一块堆内存进行修改 范例一: class Message { private int num = 10; public Message(in ...
- UVA 11542 高斯消元
从数组中选择几个数,要求他们的乘积可以开平方,问有多少种方案. 先将单个数拆分成质因子,对于这个数而言,那些指数为奇数的质因子会使这个数无法被开平方. 所以我们需要选择一个对应质因子指数为奇数的元素, ...
- C++ STL 优先队列 priority_queue 详解(转)
转自https://blog.csdn.net/c20182030/article/details/70757660,感谢大佬. 优先队列 引入 优先队列是一种特殊的队列,在学习堆排序的时候就有所了解 ...
- Scrum立会报告+燃尽图(十月二十四日总第十五次)
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2284 项目地址:https://git.coding.net/zhang ...