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 ...
随机推荐
- iOS模型输出和打印
在调试时,我们经常用到输出model,查看数据是否正确,还会在控制台"po 模型"操作,一般输出都是这样的格式的: person is <Person: 0x60800003 ...
- 中crontab定时器里的"2>&1"含义解释
*/1 * * * * /usr/local/php/bin/php posts.php >> /data/logs/audit_bbsposts.log 2>&1 & ...
- curl指令的坑
今天使用curl指令构造一个docker api访问,一直得不到预期的结果.调试了半天,发现是网址没加引号. token=$(curl -v -XGET -H >& 由于网址跟了一串参数 ...
- VMware中为CentOS配置静态ip并可访问网络-windows下的VMware
首先确保虚拟网卡(VMware Network Adapter VMnet8)是开启的,然后在windows的命令行里输入“ipconfig /all”,找到VMware Network Adapte ...
- 9-2 yum,dnf和apt
yum, CentOS: yum, dnf YUM: Yellowdog Update Modifier,rpm的前端程序,可解决软件包相关依赖性,可在多个库之间定位软件包,up2date的替代工具 ...
- 一篇文章搞懂android存储目录结构
前言 前两天因为开发一个app更新的功能,我将从服务器下载的apk文件放在了内部存储目录(测试手机为小米,路径为:data/user/0/packagename/files)下面,然后安装的时候一直安 ...
- centos7修复grub2
GRUB :“the Grand Unified Bootloader ”引导加载程序 1.主要配置文件 #/boot/grub2/grub.cfg #rm -rf /boot/grub2/grub ...
- 【Web网站服务器开发】apache和tomcat 阿帕奇和汤姆猫
经常在用apache和tomcat等这些服务器,可是总感觉还是不清楚他们之间有什么关系,在用tomcat的时候总出现apache,总感到迷惑,到底谁是主谁是次,因此特意在网上查询了一些这方面的资料,总 ...
- 使用nginx部署项目的相关资料
1.简单的利用nginx部署前端项目 2.ubuntu 下 Nginx 的安装和配置 3.nginx配置文件nginx.conf超详细讲解 4.Nginx 安装与部署配置以及Nginx和uWSGI开机 ...
- DOS bcp
C:\>bcp /?用法: bcp {dbtable | query} {in | out | queryout | format} 数据文件 [-m 最大错误数] [ ...