【实现一套爬虫数据抓取平台】[3-5-03] 微博长短地址转换

2023-11-13

零、系列目录

写这套文章的时候,不会完全按照目录的顺序一篇一篇写, 大家可以到目录中直接找到对应的章节进行查看。

点我跳转

一、背景

新浪微博有两类地址,分别是:

# pc站地址
https://weibo.com/2214257545/LgUW8DlCG

# mob站地址
https://m.weibo.cn/status/4740321169377914

这两个地址对应的是同一篇微博,实际使用过程中,需要根据拿到的不同地址,灵活判断是否需要转换地址来进行解析。

二、代码

完整代码地址:点击跳转

#!/bin/bash
# -*- coding=utf-8 -*-

ALPHABET = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"


# 10进制转为62进制
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)


# 62进制转为10进制
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


# mid转换为id
def mid2id(mid):
    mid = str(mid)[::-1]
    size = int(len(mid) / 7) if len(mid) % 7 == 0 else int(len(mid) / 7 + 1)
    result = []
    for i in range(size):
        s = mid[i * 7: (i + 1) * 7][::-1]
        s = base62_encode(int(s))
        s_len = len(s)
        if i < size - 1 and len(s) < 4:
            s = '0' * (4 - s_len) + s
        result.append(s)
    result.reverse()
    return ''.join(result)


# id转换为mid
def id2mid(id):
    id = str(id)[::-1]
    size = int(len(id) / 4) if len(id) % 4 == 0 else int(len(id) / 4 + 1)
    result = []
    for i in range(size):
        s = id[i * 4: (i + 1) * 4][::-1]
        s = str(base62_decode(str(s)))
        s_len = len(s)
        if i < size - 1 and s_len < 7:
            s = (7 - s_len) * '0' + s
        result.append(s)
    result.reverse()
    return ''.join(result)


if __name__ == '__main__':
    print('mdi2id: ' + mid2id('4740321169377914'))
    print('id2mid: ' + id2mid('LgUW8DlCG'))

三、总结

这个工具本身比较简单,至于具体需要怎么使用,大家根据自身情况灵活选择就好。

祝大家变的更强。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【实现一套爬虫数据抓取平台】[3-5-03] 微博长短地址转换 的相关文章

  • 树莓派详解

    参考文献 1 树莓派教程第一课 树莓派简介 十分钟玩转系列入门篇 哔哩哔哩 bilibili
  • 计算机网络断开后怎么连接,电脑网络断开怎样重新连接

    大家好 我是时间财富网智能客服时间君 上述问题将由我为大家进行解答 电脑网络断开重新连接的方法是 1 点击右下角网络图标 点击 打开网络和共享中心 2 点击 更改适配器设置 3 点击右键启用网络即可 网络是由节点和连线构成 表示诸多对象及其
  • 腾讯高性能RPC开发框架Tars实现服务治理(微服务)

    Github https github com Tencent Tars 1 介绍 Tars是基于名字服务使用Tars协议的高性能RPC开发框架 同时配套一体化的服务治理平台 帮助个人或者企业快速的以微服务的方式构建自己稳定可靠的分布式应用
  • C++ string类的实现

    个人简介 作者简介 大家好 我是菀枯 支持我 点赞 收藏 留言 格言 不要在低谷沉沦自己 不要在高峰上放弃努力 前言 在C语言中 没有专门用来表示字符串的类型 C语言的字符串是一系列以 0 为结尾的字符的集合 虽然C语言为这样的字符串提供了
  • vc++ 编写Windows服务 1053错误

    http xk861119 blog 163 com blog static 16327042010109102237317 建立一个服务程序的最简单的方法是用VC中的ATL COM向导 主菜单中选择新建 然后选Projects中的ATL

随机推荐

  • 京瓷6525_京瓷6525扫描怎么设置?

    本文中要用到的快捷键 Alt 一般为空格左侧第一个按键 Win 一般为空格左侧第二个按键 一般按键上标识为微软logo 一 桌面新建文件夹 名自定义 数字或字母 不能用汉字 例如我的 6525 右键属性 共享
  • php- 静态代码检测

    1 安装 PhpMetrics 可以直接 composer 全局安装 composer global require phpmetrics phpmetrics 安装完毕之后 可以这样来运行命令分析代码复杂度 phpmetrics repo
  • 关于在Unity 中动画的某一帧执行函数

    打开动画的inspector 选择Events 添加一个帧 然后再Function中输入你需要执行的函数名
  • ICS计算机系统大作业

    计算机系统 大作业 题 目 程序人生 Hello s P2P 专 业 计算机学院 学 号 120L020427 班 级 2003004 学 生 易焯平 指 导 教 师 史先俊 计算机科学与技术学院 2022年5月 摘 要 几乎全世界的程序员
  • 通俗理解PCA降维作用

    概述 本文主要介绍一种降维方法 PCA Principal Component Analysis 主成分分析 降维致力于解决三类问题 降维可以缓解维度灾难问题 降维可以在压缩数据的同时让信息损失最小化 理解几百个维度的数据结构很困难 两三个
  • Python设置excel单元格格式

    文章目录 xlwt 模块简介 设置数字的格式 设置字体 设置对齐方式 设置边框 设置 填充 设置保护 xlwt 模块简介 xlwt 是 python中一个用来操作 excel 文件的库 其中 封装了很多常用操作 本文主要讲解使用该库在生成e
  • elememt el-tree使用(样式修改+设置为单选,不含父节点)

    elememt el tree使用 样式修改 设置为单选 不含父节点 最近在使用element做练习 就单纯的想对使用的组件和功能做一下下记录 v 直接在elememt官网找自己想要使用的组件就好 html
  • 【算法提升】——中心扩散法(最长回文子串和回文子串)

    中心扩散法常用来解决回文子串的问题 如最长回文子串和回文子串的问题 最长回文子串 给你一个字符串 s 找到 s 中最长的回文子串 解题思路 从每一个位置确定回文子串中心点 回文子串向两边扩散的起始位置 向左右两边扩散进行比较 如果是 bab
  • LCD 亮度相关(背光) 正负压相关

    LCD 亮度相关 背光 kernel msm 3 18 drivers video msm mdss mdss fb c 调用led classdev register 注册lcd backlight sys class leds lcd
  • Lua的string和string库总结

    Lua有7种数据类型 分别是nil boolean number string table function userdata 这里我总结一下Lua的string类型和string库 复习一下 以便加深记忆 个人认为string是Lua编程
  • 全栈工程师的职业前景及就业环境情况说明

    本篇文章主要讲解全栈工程师的职业前景和就业趋势 作者 任聪聪 日期 2023年4月20日 全栈工程师顾名思义就是会一个技术栈领域的所有客户端技术 如web全栈即前后端技术栈都会的工程师 如web pc app都会的则也是全栈 大全栈 故此全
  • 网络---因特网的概述

    因特网的概述 网络 互联网 因特网 网络 许多计算机连接在一起 互联网 internet 许多网络连接在一起 因特网 全球最大的一个互联网 Internet和广域网 局域网 覆盖范围小 自己花钱买设备 带宽固定 10M 100M 1000M
  • 关于ER图和UML图之间的对比

    ER图与UML图 ER图 实体 联系图 Entity Relation Diagram 用来建立数据模型 在数据库系统概论中属于概念设计阶段 ER图提供了表示实体 即数据对象 属性和联系的方法 用来描述现实世界的概念模型 构成E R图的基本
  • React项目 加入 TS

    1 全局安装ts npm i g typescript 2 创建tsconfig json tsc init 修改tsconfig json 开启jsx和allowJs配置 3 安装开发环境依赖 npm install save dev t
  • 数据分析:Pandas之Series用法总结

    文章目录 Series 一 导入Series 二 创建Series 1 使用列表或者numpy进行创建 默认索引为0到N 1的整数型索引 2 使用字典创建 推荐使用 三 Series的索引和切片 1 显式索引与切片 2 隐式索引与切片 四
  • 域名系统由什么服务器组成,域名(DNS)的有那三个组成部分

    域名制度 域名 DNS 的有那三个组成部分 DNS由下面三个部分组成 域名空间和资源记录 域名空间是一个树状结构 资源记录是与名字相关的一些数据 从概念上说 每个结点和域名空间树的叶子结点都有一定的信息 而查询是要查询出一些与之相关的特定信
  • 辛普森悖论及贝叶斯解释

    辛普森悖论 Simpson s Paradox 亦有人译为辛普森诡论 为英国统计学家E H 辛普森 E H Simpson 于1951年提出的悖论 即在某个条件下的两组数据 分别讨论时都会满足某种性质 可是一旦合并考虑 却可能导致相反的结论
  • leetcode 63. 不同路径 II

    一个机器人位于一个 m x n 网格的左上角 起始点在下图中标记为 Start 机器人每次只能向下或者向右移动一步 机器人试图达到网格的右下角 在下图中标记为 Finish 现在考虑网格中有障碍物 那么从左上角到右下角将会有多少条不同的路径
  • ReactNative系列之四十八屏幕宽高

    有几种方式可以获取屏幕 依次来对比下 1 view gt onLayout measure 如果view是flex 1 则获取的为屏幕真正的可显示宽高 即全面屏含刘海高度 安全区模式不含刘海高度 实际 2 Dimens 监听change 在
  • 【实现一套爬虫数据抓取平台】[3-5-03] 微博长短地址转换

    文章目录 零 系列目录 一 背景 二 代码 三 总结 零 系列目录 写这套文章的时候 不会完全按照目录的顺序一篇一篇写 大家可以到目录中直接找到对应的章节进行查看 点我跳转 一 背景 新浪微博有两类地址 分别是 pc站地址 https we