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分析nignx访问日志脚本分享
Feb 26 Python
python函数式编程学习之yield表达式形式详解
Mar 25 Python
Python绘制正余弦函数图像的方法
Aug 28 Python
对python3中pathlib库的Path类的使用详解
Oct 14 Python
python 输出所有大小写字母的方法
Jan 02 Python
Python字典的核心底层原理讲解
Jan 24 Python
如何实现Django Rest framework版本控制
Jul 25 Python
Python 文件操作之读取文件(read),文件指针与写入文件(write),文件打开方式示例
Sep 29 Python
pandas和spark dataframe互相转换实例详解
Feb 18 Python
python爬虫可以爬什么
Jun 16 Python
再谈python_tkinter弹出对话框创建
Mar 20 Python
python blinker 信号库
May 04 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
古巴咖啡 Cubita琥爵咖啡 独特的加勒比海风味咖啡
2021/03/06 新手入门
php将session放入memcached的设置方法
2014/02/14 PHP
Win7下手动安装apache2.2、php5.4笔记
2015/04/03 PHP
laravel框架中间件简单使用方法示例
2020/01/25 PHP
fmt:formatDate的输出格式详解
2014/01/09 Javascript
javascript常见操作汇总
2014/09/03 Javascript
jQuery遍历对象、数组、集合实例
2014/11/08 Javascript
jQuery实现6位数字密码输入框
2016/12/29 Javascript
JS之if语句对接事件动作逻辑(详解)
2017/06/28 Javascript
jQuery实现滚动到底部时自动加载更多的方法示例
2018/02/18 jQuery
vscode下的vue文件格式化问题
2018/11/28 Javascript
详解Vue项目部署遇到的问题及解决方案
2019/01/11 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
2019/12/29 Javascript
nuxt 自定义 auth 中间件实现令牌的持久化操作
2020/11/05 Javascript
[02:55]DOTA2英雄基础教程 发条技师
2013/12/04 DOTA
python在linux中输出带颜色的文字的方法
2014/06/19 Python
python使用正则表达式匹配字符串开头并打印示例
2017/01/11 Python
Python查询IP地址归属完整代码
2017/06/21 Python
Python采集代理ip并判断是否可用和定时更新的方法
2018/05/07 Python
python查找重复图片并删除(图片去重)
2019/07/16 Python
使用Pandas将inf, nan转化成特定的值
2019/12/19 Python
flask框架自定义url转换器操作详解
2020/01/25 Python
浅谈h5自定义audio(问题及解决)
2016/08/19 HTML / CSS
BONIA官方网站:国际奢侈品牌和皮革专家
2016/11/27 全球购物
泰国综合购物网站:Lazada泰国
2018/04/09 全球购物
来自Ocado的宠物商店:Fetch
2018/07/10 全球购物
办公室前台岗位职责范本
2013/12/10 职场文书
经典演讲稿范文
2013/12/30 职场文书
学校运动会开幕演讲稿
2014/01/04 职场文书
银行内勤岗位职责
2014/04/09 职场文书
幼儿园植树节活动总结
2014/07/04 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
十佳家长事迹材料
2014/08/26 职场文书
2015年爱国卫生月活动总结
2015/03/26 职场文书
Redis中key的过期删除策略和内存淘汰机制
2022/04/12 Redis
netty 实现tomcat的示例代码
2022/06/05 Servers