網(wǎng)站首頁 編程語言 正文
1.簡介
大家好我是費老師,在諸如網(wǎng)絡(luò)爬蟲、web
應用開發(fā)等場景中,我們需要利用Python
完成大量的url
解析、生成等操作。
而在Python
生態(tài)中,無論是使用諸如urllib
之類的標準庫,還是各種第三方庫,可以用來有效處理url
的方法都非常之豐富。而今天費老師我要給大家介紹的url
處理庫,則是我在實際使用中綜合考慮簡單易用性與運算速度后,最為滿意的。
2.在Python中利用yarl高效處理url
這個可以用來高效便捷處理url
的第三方庫叫做yarl
,使用pip install yarl
完成安裝后,下面我們來快速學習其主要的一些功能方法:
2.1 利用yarl解析url信息
基于yarl
中的URL()
,我們可以從任意合法的url
中解析出下圖所示的各個構(gòu)成部分:
先來看一個簡單的例子,其中對我保管每一篇博客文章附件的github
倉庫路徑url
進行解析:
from yarl import URL url = URL('https://github.com/CNFeffery/DataScienceStudyNotes/tree/master/%E5%8E%86%E5%8F%B2%E6%96%87%E7%AB%A0%E9%99%84%E4%BB%B6%E5%88%97%E8%A1%A8')
原始的網(wǎng)址由于包含了中文等非ASCII
字符,所以粘貼到代碼中后變成了url編碼后的樣子,直接調(diào)用human_repr()
方法即可進行解碼還原:
而通過獲取對應url
各部分名稱的屬性,即可分別提取出相應信息:
其中端口信息是基于scheme
信息按照常規(guī)情況進行推斷的,http
即為80
,https
即為443
,若需要獲取url
中顯式出現(xiàn)的端口信息,可以使用explicit_port
:
針對url
中的hash
標簽信息則可以通過fragment
取得:
若要解析的url
中包含query
參數(shù)信息,則可以直接調(diào)用query
得到MultiDict
類型的返回結(jié)果,這是種特殊的字典類型,它允許存在重復的鍵,對于不存在重復的鍵值對,可以像普通字典那樣索引值,否則則需要通過getall()
方法來返回所傳入鍵對應的所有值列表:
可以感受到通過yarl
解析url
非常的方便~
2.2 利用yarl構(gòu)造url
當我們需要基于已有的各部分信息構(gòu)造url
時,yarl
就更加方便了,基礎(chǔ)的方式是基于URL.build()
方法,以函數(shù)傳參的方式定義url
:
而如果你已經(jīng)有了具體存在的yarl.URL
對象,想在此基礎(chǔ)上進行其他部分內(nèi)容的設(shè)置,則可以使用一系列名稱格式為with_xxx()
的方法,其中xxx
就對應著各個部分的名稱:
特別地,針對查詢參數(shù)部分,還專門有update_query()
方法進行參數(shù)追加,它與with_query()
的區(qū)別可以從下面的例子中體會到:
2.3 利用/、%運算符快捷合成url
在yarl
中,針對/
、%
運算符進行了重寫,以支持類似下面例子的快捷操作,非常的方便:
除了上面介紹的yarl
常用功能以外,還有譬如利用is_absolute()
方法判斷url
是否為絕對路徑等其他實用功能,感興趣的讀者朋友們可以前往官方文檔了解更多(https://yarl.aio-libs.org/en/latest/index.html)。
原文鏈接:https://www.cnblogs.com/feffery/p/16817124.html
相關(guān)推薦
- 2022-07-01 python神經(jīng)網(wǎng)絡(luò)Densenet模型復現(xiàn)詳解_python
- 2022-10-19 Go?熱加載之fresh詳解_Golang
- 2023-07-27 axios介紹以及對axios進行二次封裝
- 2022-06-14 golang連接redis庫及基本操作示例過程_Golang
- 2022-07-28 Python自動化實戰(zhàn)之接口請求的實現(xiàn)_python
- 2023-02-17 Go語言Gin處理響應方式詳解_Golang
- 2022-07-04 python實現(xiàn)PyEMD經(jīng)驗模態(tài)分解殘差量分析_python
- 2022-06-22 Android中TextView動態(tài)設(shè)置縮進距離的方法_Android
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支