国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

使用Python進行新浪微博的mid和url互相轉換實例(10進制和62進制互

2020-02-23 05:19:24
字體:
來源:轉載
供稿:網(wǎng)友

不過,status中包含了一個mid字段,通過mid,我們實際上是可以通過計算得到url的。

在開始計算之前有必要說明一下,什么是base62編碼。它實際上就是十進制和62位進制的互換。對于62進制,從0數(shù)到9以后,10用小寫字母a表示,接著數(shù)完26個字母,到z為35,然后36為大寫字母A,一直到61為大寫字母Z。所以,我們可以實現(xiàn)十進制數(shù)字base62編碼的encode和decode。下面的代碼實際上來自stackoverflow:

代碼如下:
ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"

def base62_encode(num, alphabet=ALPHABET):
    """Encode a number in Base X

    `num`: The number to encode
    `alphabet`: The alphabet to use for encoding
    """
    if (num == 0):
        return alphabet[0]
    arr = []
    base = len(alphabet)
    while num:
        rem = num % base
        num = num // base
        arr.append(alphabet[rem])
    arr.reverse()
    return ''.join(arr)

def base62_decode(string, alphabet=ALPHABET):
    """Decode a Base X encoded string into the number

    Arguments:
    - `string`: The encoded string
    - `alphabet`: The alphabet to use for encoding
    """
    base = len(alphabet)
    strlen = len(string)
    num = 0

    idx = 0
    for char in string:
        power = (strlen - (idx + 1))
        num += alphabet.index(char) * (base ** power)
        idx += 1

    return num

下面先說url到mid的轉換。對于一個新浪微博url,它是形如:http://weibo.com/2991905905/z579Hz9Wr,中間的數(shù)字是用戶的uid,重要的是后面的字符串“z579Hz9Wr”。它的計算其實也很簡單,從后向前四個字符一組,就得到:

代碼如下:
z
579H
z9Wr

將每個字符串用base62編碼來decode,就可以得到它們的十進制數(shù)字分別為:
代碼如下:
35
1219149
8379699

將它們拼起來就可以得到mid為:“3512191498379699”。這里要強調的是:對于除了開頭的字符串,如果得到的十進制數(shù)字不足7位,需要在前面補足0。比如得到的十進制數(shù)分別為:35,33040,8906190,則需要在33040前面添上兩個0。
代碼如下:
代碼如下:

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 灌云县| 钦州市| 噶尔县| 百色市| 吉安市| 洞口县| 呈贡县| 白银市| 梁山县| 信丰县| 五莲县| 渭南市| 汝城县| 吉林省| 乐业县| 漳浦县| 凭祥市| 宁河县| 利津县| 阿拉善左旗| 调兵山市| 垫江县| 锦州市| 阳泉市| 微博| 澄江县| 隆回县| 阿拉善左旗| 依兰县| 冷水江市| 晋江市| 柏乡县| 区。| 潮安县| 萝北县| 双柏县| 定州市| 康平县| 习水县| 浪卡子县| 都江堰市|