Python实现url长短链接的转换
三爷 人气:0简介
短链接,通俗来说,就是将长的URL网址,通过程序计算等方式,转换为简短的网址字符串。早期短链接广泛应用于图片上传网站,通过缩短网址URL链接字数,达到减少代码字符串的目的。更便于使用者引用网址,写入代码中。节省字符数空间。常见于网店图片分类的使用,因有字符限制,运用短链接,达到外链图片的目的,自微博盛行以来,在微博字数有限的特色下,短链接也盛行于微博网站,以节省字数,给博主发布更多文字的空间。
案例源码
# -*- coding: utf-8 -*- # time: 2022/11/28 11:08 # file: football-demo.py # 公众号: 玩转测试开发 import requests import pyshorteners as psn def long_to_short(url): url = psn.Shortener().chilpit.short(url) return url def short_to_long(url): res = requests.head(url) # message = {'Date': 'Sun, 27 Nov 2022 17:26:32 GMT', 'Content-Type': 'text/html; charset=UTF-8', # 'Connection': 'keep-alive', 'X-Powered-By': 'PHP/5.3.3', 'Location': 'http://www.baidu.com', # 'CF-Cache-Status': 'DYNAMIC', 'Server-Timing': 'cf-q-config;dur=6.9999950937927e-06', # 'Report-To': '{"endpoints":[{"url":"https:\\/\\/a.nel.cloudflare.com\\/report\\/v3?s=dZVwSakX8hPJ3YnxC%2FVp%2B2wBnUiDEfcjSHtVUz2NjiCpKI46AjQv2zDtngtoV4fSb1oRuvsD4MNUfjObf69EuCoRzrqooW9M94kez0KhF%2F5QiraTBcsNGhOhvQ%3D%3D"}],"group":"cf-nel","max_age":604800}', # 'NEL': '{"success_fraction":0,"report_to":"cf-nel","max_age":604800}', 'Server': 'cloudflare', # 'CF-RAY': '770c91c26998cfac-SJC'} return res.headers.get("location") if __name__ == '__main__': long_link = "http://www.baidu.com/" short_link = long_to_short(url=long_link) # 长链接 转 短链接 print(f"长链接转为短链接:{short_link}") long_restore_link = short_to_long(url=short_link) # 短链接 还原为 长链接 print(f"还原完成后的链接:{long_restore_link}")
运行结果
知识点补充
Python:短网址
简介:短网址(Short URL),是指形式上比较简短并具有自动重定向到指定链接功能的网址。随着网络、移动通信的普及,越来越多的人喜欢通过微博、手机短信发布自己的信息。
使用场景:
1、有时微博、短信等都有字数限制,太长的网址会占用大量字节甚至无法输入,而这时使用短网址服务就显得十分必要和方便了。
2、短网址服务,能够将您偏爱的新闻链接、博客地址、论坛帖子、淘宝店铺、淘宝商品等的冗长的网址转换缩短为更简短、方便的短网址的工具。
pyshorteners是Python中简单的URL缩短库,提供了18种短链根域名供使用。
安装:
pip install pyshorteners
pyshorteners有16种短链根域名供使用:
# adfly.py # bitly.py # chilpit.py # clckru.py # cuttly.py # dagd.py # gitio.py # isgd.py # nullpointer.py # osdb.py # owly.py # post.py # qpsru.py # shortcm.py # tinycc.py # tinyurl.py
部分短链根域名需要api_key抛出异常AttributeError: 'Shortener' object has no attribute 'api_key',则建议使用可以不需要api_key的
经过实测:只有部分可用
# clckru.py # dagd.py # osdb.py # qpsru.py
示例:qpsru
import pyshorteners as psn url = "http://www.baidu.com/" u = psn.Shortener().qpsru.short(url) print(u)
运行结果
加载全部内容