我从网站地图和twitter上收集了一些链接。问题是有些链接是用阿拉伯语写的,比如
https://www.aljazeera.net/videos/2021/3/1/ياقوتيا-مدينة-روسية-يتجمد-فيها-كل-شيء
我正试图解开缩短的推特链接,并解码阿拉伯语编码的链接,以获得如下链接:
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
来解码链接:
>>> 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
或者,您可以将:
添加为"安全"字符,这意味着urllib.parse
将忽略它,并将其保留为:
>>> urllib.parse.quote(oddlink, safe='/:')
/
是安全字符的一部分,因为它是链接的一个非常重要的部分:
https://www.google.com/ #with slash
https:%2F%2Fwww.google.com%2F #without slash
默认情况下,/
字符包含在安全字符中,但在更改安全字符时,需要确保包含该字符。