文章目录
- 地址类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