Python3五行代码实现缩短网址功能

折腾了一晚上,百度和新浪的都试了,都不太好用。感谢国外的大牛

需求

最近一直在更新校招微信机器人,详情看这里叮!你的校招提醒微信机器人已上线!
其中爬取的招聘信息链接太长了,本人是个强迫狂魔,这看起来太不美观了,必须缩短!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
『睿思校园招聘信息,机器喵自动获取,仅供参考』
阿里巴巴数据技术及产品部-校园交流﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951547&extra=page%3D1&mobile=2
阿里-菜鸟2018年网络测试开发工程师部门直招﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951510&extra=page%3D1&mobile=2
(散金币)百度搜索公司SRE团队2019年校招提前批﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951473&extra=page%3D1&mobile=2
错投男儿胎,找个家教兼职都这么难(都要求女生)﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951464&extra=page%3D1&mobile=2
阿里巴巴菜鸟 测试开发工程师 内推招聘﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951463&extra=page%3D1&mobile=2
乐馨托管招聘作业辅导老师一名﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951461&extra=page%3D1&mobile=2
[散金币] 西安葡萄城信息技术有限公司2019校园招聘﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951451&extra=page%3D1&mobile=2
西安诺瓦科技2019届提前批校招开始啦,与独角兽一起开疆拓土~~~~~﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951338&extra=page%3D1&mobile=2
平安租赁招实习生啦﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951331&extra=page%3D1&mobile=2
新校区附近寻找初中家教找初中家教﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951299&extra=page%3D1&mobile=2
拼多多技术校招内推﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951283&extra=page%3D1&mobile=2
百度招实习生﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951276&extra=page%3D1&mobile=2
【散金币】西安闻泰电子科技有限公司人力资源2018校园招聘﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951258&extra=page%3D1&mobile=2
拼多多2019届 校招开始啦!﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951250&extra=page%3D1&mobile=2
乐馨托管招作业辅导老师一名﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951246&extra=page%3D1&mobile=2
【找家教】给高一的两个孩子找家教﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951235&extra=page%3D1&mobile=2
「商务运营实习」「网联」「央行、阿里、腾讯、京东入股企业」「北京」﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951189&extra=page%3D1&mobile=2
老校区附近想找份家教工作,初高中数学理综均可﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951184&extra=page%3D1&mobile=2
招女生家教﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951181&extra=page%3D1&mobile=2
招募一名会微信小程序的同学开发一个公众号,报酬丰厚﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951140&extra=page%3D1&mobile=2
【金币】【招兼职老师】短期老师﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951096&extra=page%3D1&mobile=2
【散金币】+家教咯,初三英语、数学、物理、化学﹝详细信息﹞:
http://rsbbs.xidian.edu.cn/forum.php?mod=viewthread&tid=951023&extra=page%3D1&mobile=2

实现

在网上看了一大堆原理和各种API,然而用python3实现的不多,凑巧看到国外大神的,站在巨人肩膀搞定!看代码。
先来导入包和使用try,保证鲁棒性。

1
2
3
4
5
6
7
8
9
10
import contextlib
try:
from urllib.parse import urlencode
except ImportError:
from urllib import urlencode
try:
from urllib.request import urlopen
except ImportError:
from urllib2 import urlopen
import sys

剩下的就是五行代码了。

1
2
3
4
5
def make_tiny(url):
request_url = ('http://tinyurl.com/api-create.php?' +
urlencode({'url':url}))
with contextlib.closing(urlopen(request_url)) as response:
return response.read().decode('utf-8')

测试一下:

1
print(make_tiny("http://rs.xidian.edu.cn/forum.php?mod=viewthread&tid=951443"))

输出:

1
http://tinyurl.com/y7we9xnu

用浏览器打开ok,完美!

谢谢你请我吃糖果!