Python还能把“长的”变成“短的”?

举报
朱小五 发表于 2022/04/29 22:57:53 2022/04/29
【摘要】 人生苦短,快学Python! 大家好,我是小五。 最近我遇到了一些问题:需要将几百条长链接转成短链接。经过一番学习,发现Python可以轻松解决这个问题,不仅可以实现缩短【长链接→短链接】,也可以实现...

人生苦短,快学Python!

大家好,我是小五。

最近我遇到了一些问题:需要将几百条长链接转成短链接。经过一番学习,发现Python可以轻松解决这个问题,不仅可以实现缩短【长链接→短链接】,也可以实现还原【短链接→长链接】。

一条长链接

缩短链接

【长链接→短链接】缩短链接,就是把长的要死的链接,缩短到只有几个字符那么长。

这么做是为了什么呢?打个比方,如果你们公司搞了一个活动,需要群发营销短信,结果单单活动链接就占据了一页,那就会非常影响活动效果了。

某机构营销短信

所以公司机构往往会使用短链接,将其应用于活动推广、短信推广、邮件推广、社交推广、APP推广等。

如果使用Python去实现批量缩短长链接,可以怎么做呢?

第一时间想起来的就是百度短网址,两年前练习还调用过他们的api,结果发现今年4月1日就无法个人使用了,gg

调用 百度短网址 报错

如果你有服务器,可以自己搭建一个短链接工具。要么就是使用免费/付费的

免费

免费的网站有很多,但并不稳定,有跑路风险。干脆只推荐一个工具箱聚合网站:一个木函(https://ol.woobx.cn/tool/url-shortener

短网址在线生成(一个木函)

如果想使用Python调用,可以抓包该网站转换时的请求,并将curl请求命令转Python请求代码。具体用法可以参考之前的文章:每一个搞爬虫的人,都应该知道的神器!

付费

免费爽一时,付费一直爽。如果想要保证生成短链接的稳定,可以试试付费方式,这种网站就不进行推荐了。付费自然不需要去抓包接口了,直接调用即可。

某付费短链接网站

在交互式环境中输入如下命令:

from urllib.parse import quote
import requests
import json

# 先对要缩短的网址进行urlencode
url = "https://mp.weixin.qq.com/s?__biz=MzU5Nzg5ODQ3NQ==&mid=2247521340&idx=1&sn=90bdde598d4a8f14f582387e702c2c2f&chksm=fe4eb1b8c93938ae18f605a5e42d08c4ab7a83ee2d5a03b27763126e64d77cd1600cf256eb01#rd"
url = quote(url)
key = "***********************"

# 请求api接口对url进行缩短
html = requests.get(f"http://api.3w.cn/api.htm?format=json&url={url}&key={key}&expireDate=2050-01-01&domain=21").content
data = json.loads(html.decode('utf-8')) 
print(data["url"])

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

输出:

http://suo.nz/1FyT2P

  
 
  • 1

在上述代码中,我们首先对要缩短的网址进行urlencode,接着请求api接口对url进行缩短。

为什么需要urlencode编码?

URL参数字符串中使用key=value键值对这样的形式来传参,键值对之间以&符号分隔,如/s?q=abc&ie=utf-8。如果你的value字符串中包含了=或者&,那么势必会造成接收Url的服务器解析错误,因此必须将引起歧义的&和=符号进行转义,也就是对其进行编码

还原链接

在前文中,我们实现了Python调用接口自动缩短链接。那么反之,如何还原链接呢?

【短链接→长链接】比起前面的操作,这就简单多了,只需要4行代码

在交互式环境中输入如下命令:

import requests

url = "https://sourl.cn/AWeBWs"
res = requests.head(url)
print(res.headers.get('location'))

  
 
  • 1
  • 2
  • 3
  • 4
  • 5

输出:

链接的缩短与还原,可能有些冷门,但是对于需要的人来说还是挺实用的,希望对大家有帮助!

文章来源: alltodata.blog.csdn.net,作者:朱小五是凹凸君呀,版权归原作者所有,如需转载,请联系作者。

原文链接:alltodata.blog.csdn.net/article/details/124437812

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。