python中urlparse模块介绍与使用示例


Posted in Python onNovember 19, 2017

简介

urlparse模块主要是用于解析url中的参数  对url按照一定格式进行 拆分或拼接。urlparse库用于把url解析为各个组件,支持file,ftp,http,https, imap, mailto, mms, news, nntp, prospero, rsync, rtsp, rtspu, sftp, shttp, sip, sips, snews, svn, svn+ssh, telnet等几乎所有的形式。

注意:根据其官网的说明,在Python3.0中,此库已经更名为urllib.parse了。

使用说明

1.urlparse.urlparse

将url分为6个部分,返回一个包含6个字符串项目的元组:协议、位置、路径、参数、查询、片段。

import urlparse
url_change = urlparse.urlparse('https://i.cnblogs.com/EditPosts.aspx?opt=1')
print url_change

输出结果为:

ParseResult(scheme='https', netloc='i.cnblogs.com', path='/EditPosts.aspx', params='', query='opt=1', fragment='')

其中 scheme 是协议  netloc 是域名服务器  path 相对路径  params是参数,query是查询的条件

urlparse.parse_qs(urlparse.urlparse(url).query)

这个是获取urlparse分割后元祖中的某一项  urlparse.urlparse(url).query   获取查询条件

parse_qs 有几种实现

  • urlparse.parse_qs 返回字典
  • urlparse.parse_qsl 返回列表

2. urlparse.urlsplit

和urlparse差不多,将url分为5部分,返回一个包含5个字符串项目的元组:协议、位置、路径、查询、片段。

import urlparse
url_change = urlparse.urlsplit('https://i.cnblogs.com/EditPosts.aspx?opt=1')
print url_change
SplitResult(scheme='https', netloc='i.cnblogs.com', path='/EditPosts.aspx', query='opt=1', fragment='')

其中 scheme 是协议  netloc 是域名服务器  path 相对路径 query是查询的条件

3.urlparse.urljoin

将相对的地址组合成一个url,对于输入没有限制,开头必须是http://,否则将不组合前面。

import urlparse
new_url = urlparse.urljoin('https://baidu.com/ssss/','88888')
print new_url

输出 https://baidu.com/ssss/88888

如果输入错误信息 如  new_url = urlparse.urljoin('122','88888')    并不会将两者合并   输出‘88888'

urlparse获取url后面的参数

如果给定你一个URL,比如: http://url/api?param=2¶m2=4 我们需要获取参数名和参数值的话,那可以用到python标准库urlparse

import urlparse
def qs(url):
  query = urlparse.urlparse(url).query
  return dict([(k,v[0]) for k,v in urlparse.parse_qs(query).items()])

print qs('http://url/api?param=2¶m2=4') 返回的结果: {'param':'2','param2':'4'}

注意:这个模块的parse_qs方法在2;5的版本是不存在的,只有2.5以上的才有,你需要调用该方法的时候可以先通过dir(urlparse)查看模块urlparse是否有相应的方法。

官方文档地址  http://docs.python.org/library/urlparse.html

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
python列表操作实例
Jan 14 Python
python 爬取微信文章
Jan 30 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
Feb 26 Python
PyQt5实现拖放功能
Apr 25 Python
使用matplotlib中scatter方法画散点图
Mar 19 Python
使用python实现mqtt的发布和订阅
May 05 Python
centos 安装Python3 及对应的pip教程详解
Jun 28 Python
Python正则表达式匹配数字和小数的方法
Jul 03 Python
在django中自定义字段Field详解
Dec 03 Python
Django异步任务线程池实现原理
Dec 17 Python
借助Paramiko通过Python实现linux远程登陆及sftp的操作
Mar 16 Python
Keras预训练的ImageNet模型实现分类操作
Jul 07 Python
Python Flask-web表单使用详解
Nov 18 #Python
python+selenium实现京东自动登录及秒杀功能
Nov 18 #Python
深入理解Python单元测试unittest的使用示例
Nov 18 #Python
Python及PyCharm下载与安装教程
Nov 18 #Python
Python实现读取json文件到excel表
Nov 18 #Python
浅谈python 线程池threadpool之实现
Nov 17 #Python
python线程池(threadpool)模块使用笔记详解
Nov 17 #Python
You might like
php学习笔记 面向对象的构造与析构方法
2011/06/13 PHP
浅谈php常用的7大框架的优缺点
2020/07/20 PHP
jquery 表单进行客户端验证demo
2009/08/24 Javascript
学习ExtJS table布局
2009/10/08 Javascript
jquery里的each使用方法详解
2010/12/22 Javascript
js和as的稳定传值问题解决
2013/07/14 Javascript
javaScript arguments 对象使用介绍
2013/10/18 Javascript
localResizeIMG先压缩后使用ajax无刷新上传(移动端)
2015/08/11 Javascript
javascript日期格式化方法汇总
2015/10/04 Javascript
基于jquery实现ajax无刷新评论
2020/08/19 Javascript
webpack构建vue项目的详细教程(配置篇)
2017/07/17 Javascript
详解vue-cli 构建Vue项目遇到的坑
2017/08/30 Javascript
vue移动端下拉刷新和上拉加载的实现代码
2018/09/08 Javascript
js实现旋转的星空效果
2019/11/01 Javascript
Vue+ElementUI使用vue-pdf实现预览功能
2019/11/26 Javascript
详解小程序横屏方案对比
2020/06/28 Javascript
Python实用日期时间处理方法汇总
2015/05/09 Python
python使用matplotlib画饼状图
2018/09/25 Python
CSS3中设置3D变形的transform-style属性详解
2016/05/23 HTML / CSS
爱尔兰电脑、家电和家具购物网站:Buy It Direct
2019/07/09 全球购物
村优秀党员事迹材料
2014/01/15 职场文书
《陈毅探母》教学反思
2014/05/01 职场文书
工作会议方案
2014/05/21 职场文书
质量月口号
2014/06/20 职场文书
党代会心得体会
2014/09/04 职场文书
贪污受贿检讨书范文
2014/11/19 职场文书
家庭财产分割协议书范本
2014/11/24 职场文书
2015年社区宣传工作总结
2015/05/20 职场文书
企业党建工作总结2015
2015/05/26 职场文书
关于实现中国梦的心得体会
2016/01/05 职场文书
2016开学第一课心得体会
2016/01/23 职场文书
三好学生评选事迹材料(2016精选版)
2016/02/25 职场文书
一劳永逸彻底解决pip install慢的办法
2021/05/24 Python
vue判断按钮是否可以点击
2022/04/09 Vue.js
宝塔更新Python及Flask项目的部署
2022/04/11 Python
java获取一个文本文件的编码(格式)信息
2022/09/23 Java/Android