这里对于使用Python进行新浪微博的mid和url互相转换的完整攻略进行详细讲解。
1.前置知识
在进行本文中的操作前,需要了解一些相关的知识:
- 新浪微博的URL中包含了一个mid的参数,用于唯一标识一条微博,mid是基于62进制编码的。
- 62进制编码是一种将数值(0-9)、大写字母(A-Z)和小写字母(a-z)全部作为编码字符的进位计数制,共62个字符,将不同进制下的数值之间进行相互转换。
2.将mid转换为url
新浪微博的URL中包含了一个mid参数,可以通过mid参数获取到特定的微博。下面是将mid转换为url的方法:
def mid2url(mid):
url = 'https://weibo.com/{}/{}'.format(mid[:mid.find('_')], mid[mid.find('_')+1:])
return url
代码中的mid是需要转化的mid值,url即为对应的微博url。mid中下划线之前的部分为用户uid,下划线之后的部分为每条微博的唯一标识。
下面是mid2url()方法的使用示例:
mid2url('4455014833125967')
Out[2]: 'https://weibo.com/1713926427/G88afj9zX'
在代码中,我们把'4455014833125967'作为输入的mid,最后得到了该微博的url。
3.将url转换为mid
下面是将url转换为mid的方法:
def url2mid(url):
mid = url[url.rfind('/')+1:]
mid_10 = 0
for i, c in enumerate(mid[::-1]):
mid_10 += (62**i) * TABLE[c]
return str(mid_10)
TABLE = {
'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, 'a': 10, 'b': 11, 'c': 12, 'd': 13, 'e': 14, 'f': 15, 'g': 16,
'h': 17, 'i': 18, 'j': 19, 'k': 20, 'l': 21, 'm': 22, 'n': 23, 'o': 24, 'p': 25, 'q': 26, 'r': 27, 's': 28, 't': 29, 'u': 30, 'v': 31,
'w': 32, 'x': 33, 'y': 34, 'z': 35, 'A': 36, 'B': 37, 'C': 38, 'D': 39, 'E': 40, 'F': 41, 'G': 42, 'H': 43, 'I': 44, 'J': 45, 'K': 46,
'L': 47, 'M': 48, 'N': 49, 'O': 50, 'P': 51, 'Q': 52, 'R': 53, 'S': 54, 'T': 55, 'U': 56, 'V': 57, 'W': 58, 'X': 59, 'Y': 60, 'Z': 61}
在代码中,url是需要转换的微博url。mid即为对应的微博mid。mid_10为10进制数。TABLE是62进制的对应表。
下面是url2mid()方法的使用示例:
url2mid('https://weibo.com/1713926427/G88afj9zX')
Out[3]: '4455014833125967'
4.总结
以上就是将新浪微博的mid和url互相转换的完整攻略。可以根据上述方法很方便的实现这个功能,尤其是mid2url()方法,可以通过传入mid值直接返回指定微博的url。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用Python进行新浪微博的mid和url互相转换实例(10进制和62进制互算) - Python技术站