gpt4 book ai didi

url - 规范化/规范化 URL?

转载 作者:行者123 更新时间:2023-12-03 11:26:42 27 4
gpt4 key购买 nike

我正在寻找一个库函数来规范化 Python 中的 URL,即删除路径中的“./”或“../”部分,或添加默认端口或转义特殊字符等。结果应该是指向同一网页的两个 URL 唯一的字符串。例如 http://google.comhttp://google.com:80/a/../应返回相同的结果。

我更喜欢 Python 3 并且已经浏览了 urllib模块。它提供了拆分 URL 的功能,但没有将它们规范化。 Java 有 URI.normalize()做类似事情的函数(尽管它不认为默认端口 80 等于没有给定端口),但是有没有类似的东西是 python?

最佳答案

这就是我使用的,到目前为止它一直有效。您可以从 pip 获取 urlnorm。

请注意,我对查询参数进行了排序。我发现这是必不可少的。

from urlparse import urlsplit, urlunsplit, parse_qsl
from urllib import urlencode
import urlnorm

def canonizeurl(url):
split = urlsplit(urlnorm.norm(url))
path = split[2].split(' ')[0]

while path.startswith('/..'):
path = path[3:]

while path.endswith('%20'):
path = path[:-3]

qs = urlencode(sorted(parse_qsl(split.query)))
return urlunsplit((split.scheme, split.netloc, path, qs, ''))

关于url - 规范化/规范化 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10584861/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com