首页 > 其他分享 >urllib.parse:很底层,但是是一个处理url路径的好模块

urllib.parse:很底层,但是是一个处理url路径的好模块

时间:2023-03-07 23:23:49浏览次数:38  
标签:www url urllib parse print path com

介绍

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=古明地觉
 

如果觉得文章对您有所帮助,可以请囊中羞涩的作者喝杯柠檬水,万分感谢,愿每一个来到这里的人都生活愉快,幸福美满。

标签:www,url,urllib,parse,print,path,com
From: https://www.cnblogs.com/ministep/p/17190137.html

相关文章

  • 计算机基础_WebSocket以及从URL到页面展示过程
    理解WebSocket协议的底层原理websocket本质上是一种计算机网络应用层的协议,用来弥补http协议在持久通信能力上的不足。虽然http有了keep-alive,但是本质上http请求还是请求......
  • ThinkPHP MVC模式、URL访问控制器和调试模式
    一、什么是MVCM-Model编写model类对数据进行操作V-View编写html文件,页面呈现C-Controller编写类文件(UserAction.class.php)处理输入(写入数据库记录),确保M和V的同步......
  • url访问 路由跟踪 命令 tracert
    路由跟踪命令:用于确定IP数据包访问目标所采取的路径,归属网络协议层可用于对ping命令的补充,当无法ping通时,可用路由跟踪命令检测具体原因。win:tracert的作用:从你的电脑到......
  • selenium_webdriver(python)获取元素属性值,浏览器窗口控制、网页前进后退,title/url打
    <spanstyle="font-family:Arial,Helvetica,sans-serif;"><spanstyle="font-size:18px;">#coding:UTF-8#这句是为了声明编码格式,一定要有</span></span><spansty......
  • php curl 批量请求
    实例:<?php$ch=array();$res=array();$conn=array();$urls=array('baidu'=>"http://www.baidu.com/",'cheyun'=>"http://auto.jrj.com.cn/",'w3c'=......
  • php curl 请求302跳转页面
    若请求url已改变且设置了自动跳转,可通过设置CURLOPT_FOLLOWLOCATION参数实现自动请求跳转链接。若要手动判断是否跳转,可通过curl_getinfo($ch)方法获取具体请求信息,其中......
  • 6.手写JSON.stringify、JSON.parse ?
    JSON.stringifyJSON.stringify() 方法将一个JavaScript对象或值转换为JSON字符串,如果指定了一个replacer函数,则可以选择性地替换值,或者指定的replacer是数组,则可......
  • 5.JavaScript提供的正则表达式API、可以使用正则表达式解决常见问题(邮箱校验、URL解析
    JavaScript提供的正则表达式API、可以使用正则表达式解决常见问题(邮箱校验、URL解析、去重等)js正则常用API1.五个常用方法①testreg.test(str);//返回是否包含正则......
  • 从输入URL到Web页面呈现的全过程
    当用户在浏览器的地址栏中输入URL并点击回车后,页面是如何呈现的。简单来说,当用户在浏览器的地址栏中输入URL并点击回车后,浏览器从服务端获取资源,然后将内容显示在页面......
  • java通过url下载文件
    通过流的方式进行下载: 代码如下:/***通过url地址进行下载文件*@paramurl网页地址*@paramfileName文件名,不包含文件路径需要自己配置......