urllib的parse模块
python 版本3.6
1.urlparse
定义:def urlparse(url, scheme=”, allow_fragments=True)
将url拆分成六大组件
#!/usr/bin/evn python"测试urlparse"#导入parse模块
from urllib import parseurp = parse.urlparse('http://www.baidu.com:80/doc?age=5#ff')print(urp)
#result:
ParseResult(scheme='http', netloc='www.baidu.com:80', path='/doc', params='', query='age=5', fragment='ff')print(urp.scheme)
#result:
http
疑问:params是干什么的?有什么用?怎么才能有了值呢?
2.urlunparse
定义:def urlunparse(components)
功能:将拆分的组件合并为url
#!/usr/bin/evn python"测试urlunparse"#导入parse模块
from urllib import parsepr = parse.ParseResult(scheme='http', netloc='www.baidu.com:80', path='/doc', params='fd;ff', query='age=5', fragment='ff')print(parse.urlunparse(pr))
#result:
http://www.baidu.com:80/doc;paramsstr?age=5#ff
疑问解答:
更在path后面的;str就是params ,但是是干什么用的呢?
- urlsplit
定义:urlsplit(url, scheme=”, allow_fragments=True)
返回:(scheme, netloc, path, query, fragment) 比urlparse少个params
示例:
#!/usr/bin/evn python"测试urlunparse"#导入parse模块
from urllib import parsesr = parse.urlsplit('http://www.baidu.com:80/doc?age=5#ff')print(sr)
#result
SplitResult(scheme='http', netloc='www.baidu.com:80', path='/doc', query='age=5', fragment='ff')
- urlsplit
定义:urlsplit(url, scheme=”, allow_fragments=True)
返回:(scheme, netloc, path, query, fragment) 比urlparse少个params
示例:
#!/usr/bin/evn python"测试urlunparse"#导入parse模块
from urllib import parsesr = parse.SplitResult(scheme='http', netloc='www.baidu.com:80', path='/doc', query='age=5', fragment='ff')print(parse.urlunsplit(sr))
#result
http://www.baidu.com:80/doc?age=5#ff
5.urljoin
定义:def urljoin(base, url, allow_fragments=True)
如果url是完整的url路径直接返回
#!/usr/bin/evn python"测试urlunparse"#导入parse模块
from urllib import parse#相对路径
parse.urljoin('http://www.baidu.com/doc/article.html','excel/1')
# result: http://www.baidu.com/doc/excel/1
parse.urljoin('http://www.baidu.com/doc/article.html','../excel/1')
# result: http://www.baidu.com/excel/1#绝对路径
parse.urljoin('http://www.baidu.com/doc/abc/article.html','/excel/1')
#result: http://www.baidu.com/excel/1
6.urldefrag
定义:def urldefrag(url)
功能:把#后边的东西和前面的分开 (个人理解)
#!/usr/bin/evn python"测试urlunparse"#导入parse模块
from urllib import parseud = parse.urldefrag('http://www.baidu.com/doc/article.html#doc')print(ud)result:
DefragResult(url='http://www.baidu.com/doc/article.html', fragment='doc')
7.quote |quote_from_bytes
定义:quote(string, safe=’/’, encoding=None, errors=None)
功能:转码特殊字符,准确的说叫保留字符,下面已列出
“;” | “/” | “?” | “:” | “@” | “&” | “=” | “+” |”$” | “,”
#!/usr/bin/evn python"测试urlunparse"#导入parse模块
from urllib import parseprint(parse.quote('http://www.baidu.com/doc/sub.html?name=han jian&age=45@;+$'))
#result:http%3A//www.baidu.com/doc/sub.html%3Fname%3Dhan%20jian%26age%3D45%40%3B%2B%24#safe 将不被转码
print(parse.quote('http://www.baidu.com/doc/sub.html?name=han jian&age=45@;+$','/+$'))
#result:http%3A//www.baidu.com/doc/sub.html%3Fname%3Dhan%20jian%26age%3D45%40%3B+$
8.quote_plus,非常类似于quote只不过是将空格转码为+
9.unquote|unquote_to_bytes
定义:def unquote(string, encoding=’utf-8’, errors=’replace’)
功能:quote的逆过程
#!/usr/bin/evn python"测试urlunparse"#导入parse模块
from urllib import parseprint(parse.unquote('http%3A//www.baidu.com/doc/sub.html%3Fname%3Dhan%20jian%26age%3D45%40%3B+$'))#result:http://www.baidu.com/doc/sub.html?name=han jian&age=45@;+$
10.unquote_plus
定义:def unquote_plus(string, encoding=’utf-8’, errors=’replace’)
功能:quote_plus的逆过程
11.urlencode
定义:urlencode(query, doseq=False, safe=”, encoding=None, errors=None,quote_via=quote_plus)
功能:将字典形式的数据转化成查询字符串
参数的含义:
query:需要转化的字典数据
doseq:如果字典的某个值是序列的话是否解析,deseq值为False不解析doseq的值为True的时候解析,稍后在例子中给出
safe:那些字符串不需要编码
encoding:要转化成的字符串的编码
quote_via:使用quote编码还是qutoe_plus编码,默认quote_plus也就是空格被转化成+号
#!/usr/bin/env python3
# -*- coding:utf-8 -*-"urlencode 测试"from urllib import parse#定义要转化的字典数据
qdict = {'age':34,'grils':('lili','tingting'),'name':'han p$'}print(parse.urlencode(qdict))#result:
#age=34&grils=%28%27lili%27%2C+%27tingting%27%29&name=han+p%24#怎么让两个女朋友分开呢
print(parse.urlencode(qdict,True))#result
#age=34&grils=lili&grils=tingting&name=han+p%24#怎么让name里边的$不要编码呢
print(parse.urlencode(qdict,True,'$'))#result
age=34&grils=lili&grils=tingting&name=han+p$#怎么让空格不编码成+而编译成%20呢
print(parse.urlencode(qdict,True,'$',quote_via=parse.quote))
#由于前面还有两个位置参数所以使用关键字参数
#result
age=34&grils=lili&grils=tingting&name=han%20p$
12.
定义: unwrap(url):
“”“unwrap(‘
#!/usr/bin/env python3
# -*- coding:utf-8 -*-"splittype 测试"from urllib import parse
print(parse.splithost('//www.baidu.com:90/doc/h.html'))#result:
#('http', '//wwww.baidu.com')
14.splithost
定义:splithost(url)
功能:将协议名和后面的网址分开
#!/usr/bin/env python3
# -*- coding:utf-8 -*-"splithost测试"from urllib import parse
print(parse.splithost('//www.baidu.com:90/doc/h.html'))
#为什么要要求//开头呢?我估计是可以用splittype的结果
#result:
#('www.baidu.com:90', '/doc/h.html')
15.splituser
定义:splituser(url)
功能:用户信息和网址信息分开
#!/usr/bin/env python3
# -*- coding:utf-8 -*-"splituser 测试"from urllib import parse
print(parse.splituser ('han.ji:dd@163.com'))#result:
#('han.ji:dd', '163.com')
#可以见得如果想将用户名和密码分开还的splitpasswd
16.splitpasswd
定义:splitpasswd
功能:将用户名和密码分开
#!/usr/bin/env python3
# -*- coding:utf-8 -*-"splitpassword 测试"from urllib import parse
print(parse.splitpasswd('han.ji:dd'))#result:
#('han.ji', 'dd')
17,splitport
定义:splitport(host)
功能:将网址和端口号分开,这个有个要求端口号后面不能有任何东西
#!/usr/bin/env python3
# -*- coding:utf-8 -*-"splitport测试"from urllib import parse
print(parse.splitport('http://www.baidu.com:80'))#result:
#('http://www.baidu.com', '80')
18.splitquery
定义:splitquery(url)
#!/usr/bin/env python3
# -*- coding:utf-8 -*-"splitquery测试"from urllib import parse
print(parse.splitquery('http://www.baidu.com:80?dd=88'))#result:
#('http://www.baidu.com:80', 'dd=88')
19.splittag
def splittag(url):"""splittag('/path#tag') --> '/path', 'tag'."""path, delim, tag = url.rpartition('#')if delim:return path, tagreturn url, None
功能:用#切割字符串
20.splitattr
定义
def splitattr(url):"""splitattr('/path;attr1=value1;attr2=value2;...') ->'/path', ['attr1=value1', 'attr2=value2', ...]."""words = url.split(';')return words[0], words[1:]
21.
定义:
def splitvalue(attr):"""splitvalue('attr=value') --> 'attr', 'value'."""attr, delim, value = attr.partition('=')return attr, (value if delim else None)
功能:切割键和值
#!/usr/bin/env python3
# -*- coding:utf-8 -*-"splitvalue测试"from urllib import parse
print(parse.splitvalue('dd=89'))#result:
#('dd', '89')
urllib的parse模块相关推荐
- 爬虫urllib库parse模块的urlparse详解
一 点睛 urllib库里还提供了parse这个模块,它定义了处理URL的标准接口,例如实现URL各部分的抽取.合并以及链接转换. 它支持如下协议的URL处理:file.ftp.gopher.hdl. ...
- urllib库parse模块的使用
官方文档 转载于:https://www.cnblogs.com/vector-wyw/p/10416010.html
- 利用python爬虫(part2)--urllib.parse模块
学习笔记 文章目录 URL地址编码模块 作用 常用的方法 urllib.parse.utlencode({dict}) urllib.parse.quote(string)编码 urllib.pars ...
- python中urllib.parse啥意思_python-urllib.parse模块简述
前言 小编最近在编写接口自动化测试用例的过程中,需要将get请求url中的部分参数替换成预设的数据,将url中的具有时效性的auth替换成auth生成方法返回值.经过一番调研,最后选取了python的 ...
- urllib库(二)parse模块:urlparse()/urlsplit(),parse_qs()/parse_qsl(),urlunparse()/urlunsplit(),urlencode()
urllib.parse模块用于解析URL,支持对URL的操作包括拆分.拼接.编码.解码等. urllib.parse模块在功能上分为两大类:URL parsing(URL解析)和URL quotin ...
- Python爬虫核心知识-第二章:2.2 爬虫urllib.parse模块
Python爬虫核心知识 第二章:2.2 爬虫urllib.parse模块 2.2 爬虫urllib.parse模块 Python中的urllib.parse模块中,提供了很多用来解析和重组URL的函 ...
- 爬虫 :urllib库的用法,关于 request,parse模块总结
urllib库 它是python内置的请求库,包括 request ,error ,parse,robotparse. 这里主要介绍request 和parse模块. request 它是HTTP请求 ...
- Python之urllib爬虫-request模块和parse模块详解
文章目录 urllib request模块 访问URL Request类 其他类 parse模块 解析URL 转义URL robots.txt文件 urllib urllib是Python中用来处理U ...
- urllib.parse模块
urllib.parse模块 python中提供urllib.parse模块用来编码和解码,分别是urlencode()与unquote() 编码urlencode() # 导入parse模块 fro ...
最新文章
- linux 登录 忘记密码,redhat linux忘记登陆密码之解决办法
- 总结:二分法题目汇总 以及二分法模板
- PHP中使用ActiveMQ实现消息队列
- SECRET SHARING STEP BY STEP
- vue 的elementui中select下拉框多选项-multiple属性
- 电气期刊论文实现:考虑斜坡约束、开停机时间约束的电力机组组合(程序讲解)
- 变局之际,聊聊物联网的过去、现在和未来
- MQ 之 RocketMQ
- 【实践驱动开发3-001】TI WL1835MODCOM8 在android的移植 - 准备
- 木兰编程语言重现——支持列表操作,演示编辑器高亮
- mysql配置文件my.cnf解析
- Keras网络层之“关于Keras的层(Layer)”
- Stylus Loader has been initialized using an options object that does not match the API schema.
- English语法_分词 - 概述
- HTML从入门到入土 - CSS基础
- springboot自动装配原理
- UU快修-家电维修网点综合查询平台
- 利弗莫尔的操作系统到底是怎样的?
- colbat strike 安装注意事项
- 微软最走运/倒霉的十个瞬间