URL 编码和取消缩短
URL encoding and unshortening
我有一些链接是从站点地图和推特上收集的。问题是有些链接是阿拉伯语的,比如这个:
https://www.aljazeera.net/videos/2021/3/1/ياقوتيا-مدينة-روسية-يتجمد-فيها-كل-شيء
我正在尝试取消缩短的 Twitter 链接并解码阿拉伯语编码链接以获得如下所示的链接:
https://www.aljazeera.net/videos/2021/3/1/%D9%8A%D8%A7%D9%82%D9%88%D8%AA%D9%8A%D8%A7-%D9%85%D8%AF%D9%8A%D9%86%D8%A9-%D8%B1%D9%88%D8%B3%D9%8A%D8%A9-%D9%8A%D8%AA%D8%AC%D9%85%D8%AF-%D9%81%D9%8A%D9%87%D8%A7-%D9%83%D9%84-%D8%B4%D9%8A%D8%A1
如果您的目标是将其中包含奇数字符的 url 转换为 %XX
格式,您可以使用 python 的内置函数,urllib
, 解码 link:
>>> import urllib
>>> oddlink = 'https://www.aljazeera.net/videos/2021/3/1/ياقوتيا-مدينة-روسية-يتجمد-فيها-كل-شيء'
>>> goodlink = urllib.parse.quote(oddlink)
>>> print(goodlink)
https%3A//www.aljazeera.net/videos/2021/3/1/%D9%8A%D8%A7%D9%82%D9%88%D8%AA%D9%8A%D8%A7-%D9%85%D8%AF%D9%8A%D9%86%D8%A9-%D8%B1%D9%88%D8%B3%D9%8A%D8%A9-%D9%8A%D8%AA%D8%AC%D9%85%D8%AF-%D9%81%D9%8A%D9%87%D8%A7-%D9%83%D9%84-%D8%B4%D9%8A%D8%A1
请记住,它会将 https
之后的 :
解析为 %3A
。您可以手动覆盖它:
>>> goodlink = goodlink[0:5] + ':' + goodlink[6:]
>>> print(goodlink)
https://www.aljazeera.net/videos/2021/3/1/%D9%8A%D8%A7%D9%82%D9%88%D8%AA%D9%8A%D8%A7-%D9%85%D8%AF%D9%8A%D9%86%D8%A9-%D8%B1%D9%88%D8%B3%D9%8A%D8%A9-%D9%8A%D8%AA%D8%AC%D9%85%D8%AF-%D9%81%D9%8A%D9%87%D8%A7-%D9%83%D9%84-%D8%B4%D9%8A%D8%A1
或者,您可以将 :
添加为 'safe' 字符,这意味着 urllib.parse
将忽略它,并保留它:
>>> urllib.parse.quote(oddlink, safe='/:')
/
是安全字符的一部分,因为它是 link 非常重要的一部分:
https://www.google.com/ #with slash
https:%2F%2Fwww.google.com%2F #without slash
/
字符默认包含在安全字符中,但在更改安全字符时,需要确保包含它。
我有一些链接是从站点地图和推特上收集的。问题是有些链接是阿拉伯语的,比如这个:
https://www.aljazeera.net/videos/2021/3/1/ياقوتيا-مدينة-روسية-يتجمد-فيها-كل-شيء
我正在尝试取消缩短的 Twitter 链接并解码阿拉伯语编码链接以获得如下所示的链接:
https://www.aljazeera.net/videos/2021/3/1/%D9%8A%D8%A7%D9%82%D9%88%D8%AA%D9%8A%D8%A7-%D9%85%D8%AF%D9%8A%D9%86%D8%A9-%D8%B1%D9%88%D8%B3%D9%8A%D8%A9-%D9%8A%D8%AA%D8%AC%D9%85%D8%AF-%D9%81%D9%8A%D9%87%D8%A7-%D9%83%D9%84-%D8%B4%D9%8A%D8%A1
如果您的目标是将其中包含奇数字符的 url 转换为 %XX
格式,您可以使用 python 的内置函数,urllib
, 解码 link:
>>> import urllib
>>> oddlink = 'https://www.aljazeera.net/videos/2021/3/1/ياقوتيا-مدينة-روسية-يتجمد-فيها-كل-شيء'
>>> goodlink = urllib.parse.quote(oddlink)
>>> print(goodlink)
https%3A//www.aljazeera.net/videos/2021/3/1/%D9%8A%D8%A7%D9%82%D9%88%D8%AA%D9%8A%D8%A7-%D9%85%D8%AF%D9%8A%D9%86%D8%A9-%D8%B1%D9%88%D8%B3%D9%8A%D8%A9-%D9%8A%D8%AA%D8%AC%D9%85%D8%AF-%D9%81%D9%8A%D9%87%D8%A7-%D9%83%D9%84-%D8%B4%D9%8A%D8%A1
请记住,它会将 https
之后的 :
解析为 %3A
。您可以手动覆盖它:
>>> goodlink = goodlink[0:5] + ':' + goodlink[6:]
>>> print(goodlink)
https://www.aljazeera.net/videos/2021/3/1/%D9%8A%D8%A7%D9%82%D9%88%D8%AA%D9%8A%D8%A7-%D9%85%D8%AF%D9%8A%D9%86%D8%A9-%D8%B1%D9%88%D8%B3%D9%8A%D8%A9-%D9%8A%D8%AA%D8%AC%D9%85%D8%AF-%D9%81%D9%8A%D9%87%D8%A7-%D9%83%D9%84-%D8%B4%D9%8A%D8%A1
或者,您可以将 :
添加为 'safe' 字符,这意味着 urllib.parse
将忽略它,并保留它:
>>> urllib.parse.quote(oddlink, safe='/:')
/
是安全字符的一部分,因为它是 link 非常重要的一部分:
https://www.google.com/ #with slash
https:%2F%2Fwww.google.com%2F #without slash
/
字符默认包含在安全字符中,但在更改安全字符时,需要确保包含它。