python URLObject url处理模块
1、需求来源
2、urlobject安装
3、urlobject基础使用
>>>from urlobject import URLOBject
>>>url = URLObject("https://github.com/zacharyvoase/urlobject?spam=eggs#foo")
>>> print(url)
https://github.com/zacharyvoase/urlobject?spam=eggs#foo
>>> print(url.scheme) #获取传输协议
https
>>> print(url.netloc) #获取服务器主机,全网络地址,包括username,password,port等
github.com
>>> print(url.hostname)#获取服务器主机
github.com
>>> (url.username, url.password)#用户名、密码
(None, None)
>>> print(url.port) #端口号
None
>>> url.default_port
443
>>> print(url.path)#获取路径
/zacharyvoase/urlobject
>>> print(url.query)#获取query
spam=eggs
>>> print(url.fragment) #获取fragment
(2)可以通过使用with_*()方法,替换任何想替换的部分,因为unicode是不可变的,当然URLObject也是如此,因此下面的方法不会改变原有的URLObject,而是会返回新的URLObject:
>>> print(url.with_scheme('http'))
http://github.com/zacharyvoase/urlobject?spam=eggs#foo
>>> print(url.with_netloc('example.com'))
https://example.com/zacharyvoase/urlobject?spam=eggs#foo
>>> print(url.with_auth('alice', ''))
https://alice:1234@github.com/zacharyvoase/urlobject?spam=eggs#foo
>>> print(url.with_path('/some_page'))
https://github.com/some_page?spam=eggs#foo
>>> print(url.with_query('funtimes=yay'))
https://github.com/zacharyvoase/urlobject?funtimes=yay#foo
>>> print(url.with_fragment('example'))
https://github.com/zacharyvoase/urlobject?spam=eggs#example
(3)对于url中的query来说,可以使用without_方法:
>>> print(url.without_query())
https://github.com/zacharyvoase/urlobject#foo
>>> print(url.without_fragment())
https://github.com/zacharyvoase/urlobject?spam=eggs
4、relative函数相对URL的处理
>>> print(url.relative('another-project'))
https://github.com/zacharyvoase/another-project
>>> print(url.relative('?different-query-string'))
https://github.com/zacharyvoase/urlobject?different-query-string
>>> print(url.relative('#frag'))
https://github.com/zacharyvoase/urlobject?spam=eggs#frag
如果relative参数为完全的url则,返回全新的url
>>> print(url.relative('http://example.com/foo'))
http://example.com/foo
根据自己的需求可以任意设置相对路径的起始位置来满足需求
>>> print(url.relative('//example.com/foo'))
https://example.com/foo
>>> print(url.relative('/dvxhouse/intessa'))
https://github.com/dvxhouse/intessa
>>> print(url.relative('/dvxhouse/intessa?foo=bar'))
https://github.com/dvxhouse/intessa?foo=bar
>>> print(url.relative('/dvxhouse/intessa?foo=bar#baz'))
https://github.com/dvxhouse/intessa?foo=bar#baz
5、Path
>>> print(url.path)
/zacharyvoase/urlobject
>>> print(url.path.parent)
/zacharyvoase/
>>> print(url.path.segments)
('zacharyvoase', 'urlobject')
>>> print(url.path.add_segment('subnode'))
/zacharyvoase/urlobject/subnode
>>> print(url.path.root)
这些方法同样适用于URLObject,同样将会返回全心的URLObject对象,而不是对原有url进行更改,如下:
>>> print(url.parent)
https://github.com/zacharyvoase/?spam=eggs#foo
>>> print(url.add_path_segment('subnode'))
https://github.com/zacharyvoase/urlobject/subnode?spam=eggs#foo
>>> print(url.add_path('tree/urlobject2'))
https://github.com/zacharyvoase/urlobject/tree/urlobject2?spam=eggs#foo
>>> print(url.root)
https://github.com/?spam=eggs#foo
6、针对url串中query的处理
>>> print(url.query)
spam=eggs
>>> url.query.list # aliased as url.query_list
[('spam', 'eggs')]
>>> url.query.dict # aliased as url.query_dict
{'spam': 'eggs'}
>>> url.query.multi_dict # aliased as url.query_multi_dict
{'spam': ['eggs']}
在query基础上修改也是比较简单的,可以add或者setquery参数,以add开头的,可以设置某个key为多个value:
>>> print(url.query.add_param('spam', 'ham'))
spam=eggs&spam=ham
而以set为开头的函数,会使某个key只有一个value
>>> print(url.query.set_param('spam', 'ham'))
spam=ham
参数可以是一个字典
>>> print(url.query.add_params({'spam': 'ham', 'foo': 'bar'}))
spam=eggs&foo=bar&spam=ham
>>> print(url.query.set_params({'spam': 'ham', 'foo': 'bar'}))
foo=bar&spam=ham
可以使用del_param()或者del_params()删除query中的参数
>>> print(url.query.del_param('spam')) # Result is empty
>>> print(url.query.add_params({'foo': 'bar', 'baz': 'blah'}).del_params(['spam', 'foo']))
baz=blah
上面针对query对象的方法,是URLObject对象的方法的别名,可以直接在URLObject对象上直接操作,其实是调用的同一段代码:
>>> print(url.add_query_param('spam', 'ham'))
https://github.com/zacharyvoase/urlobject?spam=eggs&spam=ham#foo
>>> print(url.set_query_param('spam', 'ham'))
https://github.com/zacharyvoase/urlobject?spam=ham#foo
>>> print(url.del_query_param('spam'))
https://github.com/zacharyvoase/urlobject#foo
7、总结
python URLObject url处理模块的更多相关文章
- Python(五)模块
本章内容: 模块介绍 time & datetime random os sys json & picle hashlib XML requests ConfigParser logg ...
- Python 五个常用模块资料 os sys time re built-in
1.os模块 os模块包装了不同操作系统的通用接口,使用户在不同操作系统下,可以使用相同的函数接口,返回相同结构的结果. os.name:返回当前操作系统名称('posix', 'nt', ' ...
- [转] 三种Python下载url并保存文件的代码
原文 三种Python下载url并保存文件的代码 利用程序自己编写下载文件挺有意思的. Python中最流行的方法就是通过Http利用urllib或者urllib2模块. 当然你也可以利用ftplib ...
- Python之旅Day6 模块应用
time datetime random os sys shutil pickle json shelv xml configparser hashlib subprocess logging re ...
- python:利用configparser模块读写配置文件
在自动化测试过程中,为了提高脚本的可读性和降低维护成本,将一些通用信息写入配置文件,将重复使用的方法写成公共模块进行封装,使用时候直接调用即可. 这篇博客,介绍下python中利用configpars ...
- Python全栈开发之路 【第六篇】:Python基础之常用模块
本节内容 模块分类: 好处: 标准库: help("modules") 查看所有python自带模块列表 第三方开源模块: 自定义模块: 模块调用: import module f ...
- python常用内建模块 collections,bs64,struct,hashlib,itertools,contextlib,xml
# 2 collections 是Python内建的一个集合模块,提供了许多有用的集合类. # 2.1 namedtuple #tuple可以表示不变集合,例如,一个点的二维坐标就可以表示成: p ...
- Python 3.x标准模块库目录
出处:http://blog.csdn.net/sadfishsc/article/details/10390065 文本 1. string:通用字符串操作 2. re:正则表达式操作 3. dif ...
- Python爬虫教程-09-error 模块
Python爬虫教程-09-error模块 今天的主角是error,爬取的时候,很容易出现错,所以我们要在代码里做一些,常见错误的处,关于urllib.error URLError URLError ...
随机推荐
- 〖Windows〗zigbee实验之cygwin编译TestSimpleMac出错的解决方法
1. 错误代码如下: ... C51 COMPILER V8. - SN: K1CMC-IEYCYC COPYRIGHT KEIL ELEKTRONIK GmbH - *** ERROR C141 I ...
- C语言printf
1.调用格式为 printf("<格式化字符串>", <参量表>); 其中格式化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出; 另一部 ...
- 如何在MyEclipse中将项目部署Tomcat
如果系统里面还没有配置Tomcat,请参照<Windows下如何配置tomcat环境变量>. 1.新建一个web project项目.如下: 效果如下: 2.编写一个实现Servlet接口 ...
- hosts.allow hosts.deny
简单控制访问ip,hosts.allow/hsots.deny a simple access control language that is based on client (host name ...
- 微信小程序:bindtap方法传参
1.wxml <view bindtap="pay_again" data-name="{{orderList.jid}}" data-fee=" ...
- 更改npm全局模块和cache默认安装位置
来源于:http://blog.csdn.net/friendan/article/details/51736231 1.因为我安装的Node.js自带了npm,所以在nodejs文件夹里面新建以下两 ...
- Object-c中block需要注意的几点问题
1. Block定义 1) 说明: a. Block是OC中的一种数据类型,在iOS开发中被广泛使用 b. ^是Block的特有标记 c. Block的实现代码包含在{}之间 d. 大多情况下,以内联 ...
- DropBox 超实用的免费文件网络同步、备份、分享工具
http://www.iplaysoft.com/dropbox.html DropBox 就是一款非常好用的免费网络文件同步工具(当然它也算是一个服务).当你在电脑A使用DropBox时,指定文件夹 ...
- HOJ 1402 整数划分
HOJ1402 整数划分 http://acm.hit.edu.cn/hoj/problem/view?id=1402 [题目描述] 整数划分是一个经典的问题.希望这道题会对你的组合数学的解题能力有所 ...
- Android 界面间传参数
登陆页 //声明Intent对象,并启动 LoginActivity Activity Intent intent = new Intent(); intent.setClass(LoginActiv ...