urllib.parse:很底层,但是是一个处理url路径的好模块
介绍
urllib.parse是为urllib包下面的一个模块,urllib的其它模块完全可以使用requests替代。但是urlli.parse我们是有必要了解的,因为该模块下面有很多操作url路径的方法
urlparse:拆分url
from urllib import parse
url = "https://www.baidu.com/s?wd=python"
print(parse.urlparse(url)) # ParseResult(scheme='https', netloc='www.baidu.com', path='/s', params='', query='wd=python', fragment='')
"""
scheme:协议,比如http,https等等。
netloc:域名,这里是www.baidu.com
path:路径,跟在域名后面
params:参数
query:查询条件
fragment:锚点,用于直接定位页面的下拉位置,跳转到网页的指定位置
"""
scheme, netloc, path, params, query, fragment = parse.urlparse(url)
print(f"协议:{scheme}")
print(f"域名:{netloc}")
print(f"路径:{path}")
print(f"参数:{params}")
print(f"查询参数:{query}")
print(f"锚点:{fragment}")
"""
协议:https
域名:www.baidu.com
路径:/s
参数:
查询参数:wd=python
锚点:
"""
# 关于urlparse里面还可以传入一个scheme
# 这个参数只有在传入的url没有scheme的时候,才会起作用
url = "www.baidu.com/s?wd=python"
print(parse.urlparse(url)) # ParseResult(scheme='', netloc='', path='www.baidu.com/s', params='', query='wd=python', fragment='')
print(parse.urlparse(url), scheme="哈哈哈") # ParseResult(scheme='哈哈哈', netloc='', path='www.baidu.com/s', params='', query='wd=python', fragment='')
urlunparse:生成url
# urlparse是将url拆分
# urlunparse是将url组合,参数则是一个元祖,里面是urlparse拆分之后的各个部分
url_params = ("https", "www.abc.com", "/info/ad2sads", "", "name=saya&age=16", "splendid")
print(parse.urlunparse(url_params)) # https://www.abc.com/info/ad2sads?name=saya&age=16#splendid
urljoin:组合url
# 有时候我们获取的url是不包含域名的
# 比如爬虫获取图片,本来的路径是http://www.xxx.com/picture/aaa.jpg
# 但是返回的是/pic/aaa.jpg,于是我们就需要进行组合
netloc = "http://www.xxx.com"
path = "/picture/aaa.jpg" # 开头的/无论有没有,都能组合成功
print(parse.urljoin(netloc, path)) # http://www.xxx.com/picture/aaa.jpg
# 如果本来就是完整路径呢?
netloc = "http://www.xxx.com"
path = "http://www.xxx.com/picture/aaa.jpg"
print(parse.urljoin(netloc, path)) # http://www.xxx.com/picture/aaa.jpg
# 如果不是完整路径,会进行拼接,如果是完整路径,那么就结果就是原来本身的完整路径
netloc = "http://www.kkk.com"
path = "http://www.xxx.com/picture/aaa.jpg"
print(parse.urljoin(netloc, path)) # http://www.xxx.com/picture/aaa.jpg
# 两者域名不一样的话,有限以path自身的路径为准
# 只有path中不存在域名的时候,才会使用netloc
netloc = "http://www.kkk.com"
path = "/picture/aaa.jpg"
print(parse.urljoin(netloc, path)) # http://www.kkk.com/picture/aaa.jpg
urlencode:参数转换
# 我们在requests中调用get方法传参的时候,直接指定一个字典即可
# 说明requests会自动帮我们转化,那么我们也可以调用urlencode手动转化
netloc = "http://www.query.com"
path = "/search"
params = {"name": "mashiro", "age": 16}
print(parse.urlencode(params)) # ame=mashiro&age=16
print(parse.urljoin(netloc, path) + "?" + parse.urlencode(params)) # http://www.query.com/search?name=mashiro&age=16
quote:中文转换url编码
# 当我们在url中传入中文的时候,会以编码的形式
url = "https://www.baidu.com/s?wd=古明地觉"
print(parse.quote(url)) # https%3A//www.baidu.com/s%3Fwd%3D%E5%8F%A4%E6%98%8E%E5%9C%B0%E8%A7%89
unquote:url编码解码成中文
print(parse.unquote("https%3A//www.baidu.com/s%3Fwd%3D%E5%8F%A4%E6%98%8E%E5%9C%B0%E8%A7%89")) # https://www.baidu.com/s?wd=古明地觉
urllib.parse:很底层,但是是一个处理url路径的好模块的更多相关文章
- urllib.parse.urlencode
urllib.request.urlopen(url,data,timeout) 其中如果data被赋值,则请求的方式就会由get转为post,而post需要提供一些待处理的数据. 这些待处理的数据需 ...
- python3中的urllib.parse的常用方法
将URL按一定的格式进行拆分 使用 urllib.parse.urlparse将url分为6个部分,返回一个包含6个字符串项目的元组:协议.位置.路径.参数.查询.片段 参照官方地址:https:// ...
- urllib.parse.parse_qsl 的一个小问题
最近在使用urllib时发现的一个问题,记录一下. 首先请分别执行下面这两句代码: 1."你好".encode("utf8").decode("gbk ...
- 我与python3擦肩而过(三)—— 我去。。又是编码问题——urllib.parse.unquote
记得初学python时就学的爬虫,经常遇到编码问题(其实在python3里面编码问题已经很少了...),用requests库就挺方便解决这些问题的.近来有共同学习python的程序员写了个电子书网站, ...
- urllib.parse
1 url分解 import urllib.parse result = urllib.parse.urlparse('http://www.baidu.com') print(result) 结果为 ...
- Python 的 urllib.parse 库解析 URL
Python 中的 urllib.parse 模块提供了很多解析和组建 URL 的函数. 解析url urlparse() 函数可以将 URL 解析成 ParseResult 对象.对象中包含了六 ...
- URL组成成分及各部分作用简介及urllib.parse / uri
URL的一般格式为(带方括号[]的为可选项): protocol :// hostname[:port] / path / [;parameters][?query]#fragment urllib. ...
- (转)Python3 模块3之 Urllib之 urllib.parse、urllib.robotparser
原文:https://blog.csdn.net/qq_36148847/article/details/79153738 https://blog.csdn.net/zly412934578/art ...
- urllib.parse.urldefrag(url)的解释
引自https://www.cnblogs.com/ublue/articles/4471210.html 1.URL hash(片段标识符) 任一带#的URL称为片段URL(通常称为URL hash ...
随机推荐
- Oracle11gR2之ORA-01034、ORA-27101、ORA-00119、 ORA-00132
昨天安装的oracel,今天用navicat连接oracel出现以下错误: ORA-01034: ORACLE not available ORA-27101: shared memory realm ...
- 如何运行Vue源码
1.下载源码 从git中找到vue源码,把repo链接复制,使用[ git clone 链接 ]命令将vue源码下载到本地. 2.可以看到以下目录 每次看vue项目时,我们首先要看下package.j ...
- Linux中脚本运行错误(坏的解释器:没有那个文件或目录)
原因: 在Linux中有时候我们将在Windows下编写的脚本拷贝到Linux环境中运行时会出现运行不了的情况. 主要还是Windows的换行符为\r\n,而Linux环境中的换行符号为\n. 解决办 ...
- Mac 操作小技巧
系统版本 MacOs Mojava # 快捷键篇: 1. 打开终端:command+空格,输入terminal:在终端页面,新建终端command + T 2. 打开文件夹:command + T 3 ...
- redis db0-15 的概念
redis默认有db0~db15之多. redis有没有什么方法使不同的应用程序数据彼此分开同时又存储在相同的实例上呢?就相当于mysql数据库,不同的应用程序数据存储在不同的数据库下. redis下 ...
- python中property属性的介绍及其应用
Python的property属性的功能是:property属性内部进行一系列的逻辑计算,最终将计算结果返回. 使用property修饰的实例方法被调用时,可以把它当做实例属性一样 property的 ...
- 转 RTSP客户端模拟器(TCP方式,Python实现)
转自: http://www.cnblogs.com/MikeZhang/archive/2012/10/29/rtspTcpClient_DSS_20121029.html 由于某种需求,工作中需要 ...
- how to Simply Singleton Navigate the deceptively simple Singleton pattern---reference
http://www.javaworld.com/article/2073352/core-java/simply-singleton.html JAVA DESIGN PATTERNS By Dav ...
- C# 不用添加WebService引用,调用WebService方法
// 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行. [System.Web.Script.Services.ScriptService] 使用HttpWeb ...
- url请求
--[[local g = require 'library.global'--__ml_ss = mlc.prefix.ml_psession..tostring(os.time());local ...