使用 Python的urlliib.parse 庫解析 URL
Python 中的 urllib.parse 模塊提供了很多解析和組建 URL 的函數。
-- Darksun
致謝
轉載自 | https://github.com/lujun9972/lujun9972.github.com/blob/source/%E7%BC%96%E7%A8%8B%E4%B9%8B%E6%97%85/%E4%BD%BF%E7%94%A8urlliib.parse%E5%BA%93%E8%A7%A3%E6%9E%90url.org
作者 | Darksun
Python 中的 模塊提供了很多解析和組建 URL 的函數。
解析url
函數可以將 URL 解析成 對象。對象中包含了六個元素,分別為:
? 協議(scheme)
? 域名(netloc)
? 路徑(path)
? 路徑參數(params)
? 查詢參數(query)
? 片段(fragment)
結果為:
繼承於 ,因此可以同時通過索引和命名屬性來獲取 URL 中各部分的值。
為了方便起見, 還提供了 、 、 、 對 進一步進行拆分。
結果為:
除了 之外,還有一個類似的 函數也能對 URL 進行拆分,所不同的是, 並不會把 從 中分離出來。
當 URL 中路徑部分包含多個參數時,使用 解析是有問題的:
結果為:
這時可以使用 來解析:
結果為:
若只是要將 URL 後的 標識拆分出來,可以使用 函數:
結果為:
組建URL
對象和 對象都有一個 方法,可以返回一個完整的 URL 字元串。
結果為:
但是 只在 和 對象中有,若想將一個普通的元組組成 URL,則需要使用 函數:
結果為:
相對路徑轉換絕對路徑
除此之外, 還提供了一個 函數,來將相對路徑轉換成絕對路徑的 URL。
結果為:
查詢參數的構造和解析
使用 函數可以將一個 dict 轉換成合法的查詢參數:
結果為:
可以看到特殊字元也被正確地轉義了。
相對的,可以使用 來將查詢參數解析成 dict。
結果為:
如果只是希望對特殊字元進行轉義,那麼可以使用 或 函數,其中 比 更激進一些,會把 、 一類的符號也給轉義了。
結果為:
可以看到 中應該是調用 來進行轉義的。
逆向操作則使用 或 函數:
結果為:
你會發現 函數居然能正確地將 的結果轉換回來。


※Selenium3+Python3環境部署
※Python製作AI且mini版飛機大戰
TAG:Python |