文章目錄
- 地址類QUrl
- 主要功能
- URL 格式介紹
- 常見 scheme(協議)類型
- QUrl 類常用方法
- 常用方法示例
- 典型應用場景
地址類QUrl
QUrl 是 PySide6.QtCore 模塊中的一個類,用于處理和操作 URL(統一資源定位符)。它可以解析、構建、修改和驗證 URL 字符串,廣泛應用于網絡編程和需要處理地址的場景。
主要功能
- 解析和構建 URL:可以從字符串創建 QUrl 對象,也可以將 QUrl 對象轉換為字符串。
- 分解和修改 URL 各部分:如 scheme(協議)、host(主機)、port(端口)、path(路徑)、query(查詢參數)、fragment(片段)等。
- 編碼與解碼:自動處理 URL 編碼和解碼,保證特殊字符的正確傳遞。
- 驗證 URL:可以判斷 URL 是否有效(isValid)、是否為本地文件(isLocalFile)等。
URL 格式介紹
URL(統一資源定位符)通常由以下幾個部分組成:
- scheme(協議):指定訪問資源所用的協議,如 http、https、ftp、file 等。
- user(用戶名) 和 password(密碼):可選,部分協議支持在 URL 中包含用戶名和密碼。
- host(主機):資源所在的服務器地址,可以是域名或 IP 地址。
- port(端口):可選,指定服務器的端口號,若省略則使用協議的默認端口。
- path(路徑):資源在服務器上的具體位置。
- query(查詢參數):可選,提供額外的參數信息,格式為 key=value。
- fragment(片段):可選,指向資源內部的某個位置,常用于網頁錨點。
一個典型的 URL 格式如下:
scheme://user:password@host:port/path?query#fragment
例如:
https://user:pass@example.com:8080/path/page.html?query=123#section
部分 | 示例值 | 說明 |
---|---|---|
scheme | https | 協議 |
user | user | 用戶名(可選) |
password | pass | 密碼(可選) |
host | example.com | 主機 |
port | 8080 | 端口(可選) |
path | /path/page.html | 路徑 |
query | query=123 | 查詢參數(可選) |
fragment | section | 片段(可選) |
常見 scheme(協議)類型
scheme | 說明 |
---|---|
http | 超文本傳輸協議 |
https | 安全超文本傳輸協議 |
ftp | 文件傳輸協議 |
file | 本地文件 |
ws | WebSocket |
wss | 安全 WebSocket |
mailto | 電子郵件地址 |
data | 內嵌數據 |
smb | Windows 共享文件協議 |
nfs | 網絡文件系統 |
ssh | 安全 Shell 協議 |
telnet | 終端網絡傳輸協議 |
imap | 電子郵件 IMAP 協議 |
pop3 | 郵件 POP3 協議 |
tel | 電子電話號碼 |
javascript | JavaScript 腳本 |
vnc | 虛擬桌面協議 |
rtsp | 實時傳輸流協議 |
rtmp | 實時傳輸媒體協議 |
rmi | 遠程方法調用協議 |
irc | Internet 聊天協議 |
gopher | 互聯網文件傳輸協議 |
nntp | 網絡新聞傳輸協議 |
nc | 網絡控制協議 |
sshs | 安全 Shell 協議 |
sftp | 安全文件傳輸協議 |
rlogin | 遠程登錄協議 |
rsync | 遠程同步協議 |
rsh | 遠程 shell 協議 |
ssh2 | 安全 Shell 協議 |
MMS | 多媒體分享協議 |
ed2k | eDonkey 電驢網絡傳輸協議 |
thunder | 迅雷網絡傳輸協議 |
Flashget | FlashGet 網絡傳輸協議 |
不同的 scheme 決定了 URL 的用途和訪問方式,QUrl 支持多種協議,具體可參考官方文檔。
QUrl 類常用方法
QUrl()
:構造一個空的 QUrl 對象。QUrl(string)
:通過字符串創建 QUrl 對象。isValid()
:判斷 URL 是否有效。isEmpty()
:判斷 URL 是否為空。isLocalFile()
:判斷是否為本地文件路徑。scheme()
:獲取協議部分(如 http、https)。setScheme(scheme)
:設置協議部分。host()
:獲取主機名。setHost(host)
:設置主機名。port()
:獲取端口號。setPort(port)
:設置端口號。userName()
:獲取用戶名。setUserName(name)
:設置用戶名。password()
:獲取密碼。setPassword(password)
:設置密碼。path()
:獲取路徑部分。setPath(path)
:設置路徑部分。query()
:獲取查詢參數字符串。setQuery(query)
:設置查詢參數字符串。fragment()
:獲取片段(錨點)。setFragment(fragment)
:設置片段。toString()
:將 QUrl 對象轉換為字符串。fromLocalFile(path)
:通過本地文件路徑創建 QUrl 對象。toLocalFile()
:將 QUrl 轉換為本地文件路徑。resolved(relative)
:合并相對路徑,返回新的 QUrl。
常用方法示例
from PySide6.QtCore import QUrl# 創建 QUrl 對象
url = QUrl("https://www.example.com:8080/path/page.html?query=123#section")# 獲取各部分
print(url.scheme()) # https
print(url.host()) # www.example.com
print(url.port()) # 8080
print(url.path()) # /path/page.html
print(url.query()) # query=123
print(url.fragment()) # section# 修改 URL
url.setHost("www.qt.io")
print(url.toString()) # https://www.qt.io:8080/path/page.html?query=123#section# 檢查有效性
print(url.isValid()) # True# 判斷是否為本地文件
local_url = QUrl.fromLocalFile("C:/Users/Example/file.txt")
print(local_url.isLocalFile()) # True
典型應用場景
- 網絡請求時構建和解析 URL
- 處理本地文件路徑與網絡地址的轉換
- 管理和校驗用戶輸入的地址信息
更多詳細內容可參考官方文檔:QUrl — Qt for Python