如何用Python制作唯一短网址?

46 投票
12 回答
42756 浏览
提问于 2025-04-15 14:42

我想知道怎么在Python中生成独特的链接,就像这个https://i.stack.imgur.com/turb6.jpg或者这个http://tumblr.com/xzh3bi25y那样。 我用Python的uuid功能生成的链接太长了,我想要一些更短的链接来使用。

12 个回答

9

Python的short_url库非常棒。

这里有一个例子:

import short_url

id = 20  # your object id
domain = 'mytiny.domain' 

shortened_url = "http://{}/{}".format(
                                     domain,
                                     short_url.encode_url(id)
                               )

还有如何解码这个代码:

decoded_id = short_url.decode_url(param)

就这样 :)

希望这能帮到你。

17

我不太确定大多数网址缩短工具是不是用随机字符串。我的感觉是,它们会把网址写入数据库,然后用新记录的整数ID作为短网址,再用36进制或62进制(字母+数字)进行编码。

如果你想用Python把一个整数转换成任意进制的字符串,可以参考这个链接

25

编辑: 这里我为你写了一个模块。用一下吧。 http://code.activestate.com/recipes/576918/


从1开始计数可以确保生成短而独特的网址,比如 /1, /2, /3 等等。

如果在你的字符集中加入大写和小写字母,你就能得到类似于你问题中的网址。其实这就是在用62进制来计数,而不是10进制。

现在唯一的问题是,这些网址是连续的。要解决这个问题,可以看看我对这个问题的回答:

将递增的整数范围映射到六位数的26进制最大值,但要不可预测

基本上,这种方法就是在递增的数值中随意调换一些位数,这样看起来就像是随机的,同时又能保持确定性,确保不会出现重复的网址。

撰写回答