如何用Python制作唯一短网址?
我想知道怎么在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进制。
现在唯一的问题是,这些网址是连续的。要解决这个问题,可以看看我对这个问题的回答:
基本上,这种方法就是在递增的数值中随意调换一些位数,这样看起来就像是随机的,同时又能保持确定性,确保不会出现重复的网址。