Python中Urlparse模块

article/2025/9/30 13:29:47

Urlparse这个第三方模块中包含的函数有urljoin、urlsplit、urlunsplit、urlparse等。 

1.urlparse.urlparse(urlstring[, scheme[, allow_fragments]])

    urlparse将urlstring解析成6个部分,它从urlstring中取得URL,并返回元组 (scheme, netloc, path, parameters, query, fragment),但是实际上是基于namedtuple,是tuple的子类。它支持通过名字属性或者索引访问的部分URL,每个组件是一串字符,也有可能是空的。组件不能被解析为更小的部分,%后面的也不会被解析,分割符号并不是解析结果的一部分,除非用斜线转义,注意,返回的这个元组非常有用,例如可以用来确定网络协议(HTTP、FTP等等 )、服务器地址、文件路径,等等。如下图所示

(1)引入urlparse模块,这里只引入了urlparse方法,如果你想要用所有的方法,你需要import urlparse

from urlparse import urlparse

(2)我们将下面的url地址进行拆解,将拆解的结果存放到parsed中.

 parsed=urlparse('http://user:pass@Netloc:80/path;parameters?query=argument#fragment')

(3)之后,我们通过parsed的各个属性来访问不同的部分

from urlparse import urlparseparsed = urlparse('url地址')print 'scheme  :'+ parsed.scheme   #网络协议print 'netloc  :'+ parsed.netloc   #服务器位置(也可呢能有用户信息)print 'path    :'+ parsed.path     #网页文件在服务器中存放的位置print 'params  :'+ parsed.params   #可选参数print 'query   :'+ parsed.query    #连接符(&)连接键值对print 'fragment:'+ parsed.fragment #拆分文档中的特殊猫print 'username:'+ parsed.username #用户名print 'password:'+ parsed.password #密码print 'hostname:'+ parsed.hostname #服务器名称或者地址print 'port    :', parsed.port     #端口(默认是80)
>>> import urlparse
>>> url=urlparse.urlparse('http://www.baidu.com/index.php?username=guol')
>>> print url
ParseResult(scheme='http', netloc='www.baidu.com', path='/index.php', params='', query='username=guol', fragment='')
>>> print url.netloc
www.baidu.com

2.urlparse.urlunparse(parts)

    urlunparse是urlparse的逆方法

    从一个元组构建一个url,元组类似urlparse返回的,它接收元组(scheme, netloc, path, parameters, query, fragment)后,会重新组成一个具有正确格式的URL,以便供Python的其他HTML解析模块使用。

>>> import urlparse
>>> url=urlparse.urlparse('http://www.baidu.com/index.php?username=guol')
>>> print url
ParseResult(scheme='http', netloc='www.baidu.com', path='/index.php', params='', query='username=guol', fragment='')
>>> u=urlparse.urlunparse(url)
>>> print u
http://www.baidu.com/index.php?username=guol

3.urlparse.urlsplit(urlstring[, scheme[, allow_fragments]])

    主要是分析urlstring,返回一个包含5个字符串项目的元组:协议、位置、路径、查询、片段。allow_fragments为False时,该元组的组后一个项目总是空,不管urlstring有没有片段,省略项目的也是空。urlsplit()和urlparse()差不多。不过它不切分URL的参数。

4.urlparse.urlunsplit(parts)

>>> import urlparse
>>> url=urlparse.urlparse('http://www.baidu.com/index.php?username=guol')
>>> print url
ParseResult(scheme='http', netloc='www.baidu.com', path='/index.php', params='', query='username=guol', fragment='')
>>> url=urlparse.urlsplit('http://www.baidu.com/index.php?username=guol')
>>> print url
SplitResult(scheme='http', netloc='www.baidu.com', path='/index.php', query='username=guol', fragment='')

 urlunsplit使用urlsplit()返回的值组合成一个url

5.urlparse.urljoin(base, url[, allow_fragments])

    urljoin主要是拼接URL,它以base作为其基地址,然后与url中的相对地址相结合组成一个绝对URL地址。函数urljoin在通过为URL基地址附加新的文件名的方式来处理同一位置处的若干文件的时候格外有用。需要注意的是,如果基地址并非以字符/结尾的话,那么URL基地址最右边部分就会被这个相对路径所替换。如果希望在该路径中保留末端目录,应确保URL基地址以字符/结尾。

>>> import urlparse
>>> urlparse.urljoin('http://www.oschina.com/tieba','index.php')
'http://www.oschina.com/index.php'
>>> urlparse.urljoin('http://www.oschina.com/tieba/','index.php')
'http://www.oschina.com/tieba/index.php'

总结:

urlparse和urlsplit方法类似,urlunparse和urlunsplit类似,只不过是少了一个字符串。

import urlparseurl = urlparse.urlparse('http://www.baidu.com/index.php?username=guol')
print url
print urlparse.urlunparse(url)
url = urlparse.urlsplit('http://www.baidu.com/index.php?username=guol')
print url
print urlparse.urlunsplit(url)
print urlparse.urljoin('http://www.oschina.com/tieba','index.php')
print urlparse.urljoin('http://www.oschina.com/tieba/','index.php')
ParseResult(scheme='http', netloc='www.baidu.com', path='/index.php', params='', query='username=guol', fragment='')
http://www.baidu.com/index.php?username=guol
SplitResult(scheme='http', netloc='www.baidu.com', path='/index.php', query='username=guol', fragment='')
http://www.baidu.com/index.php?username=guol
http://www.oschina.com/index.php
http://www.oschina.com/tieba/index.php

 


http://chatgpt.dhexx.cn/article/emFU3ZCd.shtml

相关文章

[240]python的urllib.parse库解析URL

Python 中的 urllib.parse 模块提供了很多解析和组建 URL 的函数。 解析url urlparse() 函数可以将 URL 解析成 ParseResult 对象。对象中包含了六个元素,分别为: 协议(scheme) 域名(netloc) 路径&#x…

Python之urllib爬虫-request模块和parse模块详解

文章目录 urllibrequest模块访问URLRequest类其他类 parse模块解析URL转义URL robots.txt文件 urllib urllib是Python中用来处理URL的工具包,源码位于/Lib/下。它包含了几个模块:用于打开及读写的urls的request模块、由request模块引起异常的error模块、…

url.parse() 的替换方法new URL(),URl.parse()的使用。

URl.parse()的解析使用 对于这种表单提交的的请求路径,由于其中具有用户动态填写的内容所以不能通过完整的URL路径来处理这个请求对于我们来讲,只需要判定,请求路径是/……?之前就行 var myurl require(url); var obj myurl.p…

Python之urlparse模块

一、简介 urlparse库用于把url解析为各个组件,支持file,ftp,http,https, imap, mailto, mms, news, nntp, prospero, rsync, rtsp, rtspu, sftp, shttp, sip, sips, snews, svn, svnssh, telnet等几乎所有的形式。根据其官网的说明,在Python3.0中&#x…

Python模块:urlparse模块(操作url)

文章目录 一、介绍二、功能介绍1.urlparse.urlparse2.urlparse.urlsplit3.urlparse.urljoin 一、介绍 官方文档 :http://docs.python.org/library/urlparse.html作用:urlparse模块主要是用于解析url中的参数 对url按照一定格式进行 拆分或拼接注意&…

基于FPGA的人脸识别

基于FPGA的人脸识别 一.理论基础 1.基本介绍 模块框图: 在上一篇文章里,已经实现了基于OV5640的摄像头监控,在此基础上,我们加入一些图像处理的内容,即可实现简单的一些图像处理效果,这次做到的就是最…

facenet 人脸识别原理理解(三)

在前两篇文章已经介绍了facenet人脸识别代码的使用和具体操作,但相关的原理还是没有说,这篇文章进行简单的讲解一下。 1. 原理 在人脸识别中,当我们需要加在图片数据库入新的一张人脸图片时,是怎么做到识别的呢,难道…

人脸识别mtcnn原理

人脸检测,也就是在图片中找到人脸的位置。输入是一张可能含有人脸的图片,输出是人脸位置的矩形框。 人脸对齐。原始图片中人脸的姿态、位置可能有较大的区别,为了之后统一处理,要把人脸“摆正”。为此,需要检测人脸中…

dlib中的人脸识别原理

这里讨论的是人脸识别,不是人脸检测 dlib中是先检测都人脸,然后把人脸通过Resnet生成一个128维的向量,Resnet有几种不同深度的结构(图片来自https://raw.githubusercontent.com/raghakot/keras-resnet/master/images/architecture.png) dlib…

计算机识别人脸原理,深入浅出人脸识别原理

编辑推荐: 本文主要介绍了人脸识别流程,如何提取面部训练数据进行识别以及人脸检测和人脸识别,它们应用场景有哪些,希望对您的学习又所帮助。 本文来自于csdn,由火龙果软件Alice编辑、推荐。 前不久Iphone X发布,革命性的取消了TouchID(指纹识别),而添加了更酷的 FaceID(…

基于html5鼠标悬停图片动画展示效果

分享一款基于html5鼠标悬停图片动画展示效果。里面包含两款不同效果的html5图片展示效果。效果图如下&#xff1a; 在线预览 源码下载 实现的代码。 html代码&#xff1a; <div class"wrap" id"wrap"><div style"float: left; padding-top…

组件分享之后端组件——一个简单且高度可扩展的分布式文件系统seaweedfs

组件分享之后端组件——一个简单且高度可扩展的分布式文件系统seaweedfs 背景 近期正在探索前端、后端、系统端各类常用组件与工具&#xff0c;对其一些常见的组件进行再次整理一下&#xff0c;形成标准化组件专题&#xff0c;后续该专题将包含各类语言中的一些常用组件。欢迎大…

代理神器Charles4.2.8的破解

打开Charles&#xff0c;点击工具栏的Help&#xff0c;选择Register Charles&#xff0c;在两栏里分别输入即可。 Registered Name: https://zhile.io License Key: 48891cf209c6d32bf4

TLS加密套件

出于兴趣爱好&#xff0c;决定开发TLS1.2-1.3的一个库。为此阅读了TLS相关的若干RFC文档&#xff0c;以及查阅了多篇相关博客文章。最终有以下发现&#xff1a; 1. TLS定义了几百个加密套件(参考https://www.iana.org/assignments/tls-parameters/tls-parameters.xhtml)&#x…

sshd服务及防暴力破解 附赠防暴力破解脚本

利用yum源安装sshd服务客户端安装&#xff1a;openssh-clients.x86_64 服务端安装&#xff1a;openssh-server.x86_64Openssh和sshd有区别吗&#xff1f; 两个是不同的概念&#xff0c;软件包名称叫openshh 开机的服务叫sshd[rootserver1 ~]# rpm -ql openssh ###查看安装的…

The server selected protocol version TLS10 is not accepted by client preferences [TLS12]

最近在部署项目的时候遇到一个问题&#xff0c;卡了整整一天时间&#xff0c;所以感觉有必要po个解决方法出来给有需要的朋友参考一下。 问题描述&#xff1a;Caused by: javax.net.ssl.SSLHandshakeException: The server selected protocol version TLS10 is not accepted b…

TLS 1.3 协议详解

TLS 1.3 握手流程详解 我的TLS实现&#xff08;支持TLS1.3和国密SSL&#xff09;&#xff0c;大家可以学习参考&#xff1a;https://github.com/mrpre/atls/ 如果觉得有用&#xff0c;请打赏N元&#xff1a;http://39.98.242.44 需要的背景知识&#xff1a; &#xff08;1&am…

服务攻防-协议漏洞-FTPRDPSSHRsyncProFTPDlibsshOpenssh-Hydra工具使用口令猜解未授权访问

目录 一、导图 二、口令猜解-Hydra-FTP&RDP&SSH 1、协议介绍 2、Hydra工具介绍 3、实例演示 三、配置不当-未授权访问-Rsync 文件备份 1、Rsync介绍 2、漏洞成因——配置不当 3、实例演示 四、协议漏洞-应用软件-FTP&ProFTPD搭建 1、引入 2、ProFTPD介…

提示:The server selected protocol version TLS10 is not accepted by client preferences [TLS13, TLS12]

JMeter连接SQLservice数据库。 1、测试计划添加sqljdbc41.jar 2、添加数据库配置 3、添加请求 3、按着上面的配置&#xff0c;执行&#xff0c;然后报错误了。 提示“Cannot create PoolableConnectionFactory (The driver could not establish a secure connection to SQL S…

SSH暴力破解

ssh暴力破解解决方案 https://www.cnblogs.com/walkingzq/p/8191900.html 最近在使用腾讯云服务器的过程中&#xff0c;被比特币黑客黑了一次服务器&#xff08;如下图所示&#xff09;。 图1 比特币勒索信息 继而认识到网络安全的重要性。在重新安装系统之后&#xff0c;发现…