大家新年好!每逢过年,家家户户少不了的一项就是贴对联,但是看着年年的新春对联,内容毫无新意,兴致也就减了大半。既然是玩Python的,最近春节在家也无聊,花了几个小时,用Python设计一个小的对联软件!
先看效果图
界面设计
首先,程序的界面设计还是利用tkinter来进行设计。通过tkinter的Entry类来输入我们的上联,然后通过button按钮,来启动程序进行设计。button键之所以能够完成后续的运行,是因为其绑定了我们的后续的操作函数(也就是代码中的get_xialian函数),通过绑定的函数,实现了爬虫的抓取和对联的保存。
界面设计完成了,而且绑定的函数也已经确定,接下来就是如何利用绑定的函数,来实现我们的后续操作,也就是爬虫抓取和保存。
爬虫助攻
首先对网页的分析,打开对联设计网页,并进入开发者模式,可以很轻松的找到我们需要的目标,如下图所示:
查看其请求的url,如下所示:
这个url非常的复杂,需要我们仔细的进行分析:
首先我们可以看出url有四个部分需要我们进行输入,然后细细分析发现,其in是我们输入的上联
time和timestamp顾名思义是时间和时间戳
而len的意义是输入的字数,以0的个数来代替
有同学可能问,这哪里有时间和输入?分明都是些字母符号。这是因为这里的时间和输入都是经过url编码后的格式,我们可以通过urllib中的unquote函数来检查。稍微总结一下,上面的url比较负责,包含了url编码的输入,还有特定编码格式的时间,还有时间戳以及让人费解的len。
了解了url的结构组织,我们就可以很轻松的模拟浏览器进行访问,返回我们需要的内容。但是在后续又出现了乱码的问题,对于乱码的问题,我们将爬取到的数据采用“utf-8”编码进行解决。而针对于json库不能解析,我们采用正则表达式的方式,匹配“下联”,并将“下联”返回。
最后将得到的数据保存在根目录下,当对联保存完毕后,程序会弹出对话框,提醒对联已经完成,并到本地进行查看,运行效果如下图所示。
用Python自带的tk作一些小工具结合爬虫,还是非常有意思的!如果能对下联进行AI处理,比如爬取几千幅对联并模型训练,用自然语言智能处理就更有意思啦!有兴趣的同学可以进行改编!需要源码的同学,直接扫码获取:
获取源码,扫上面的二维码,然后输入:【对联】
领取专属 10元无门槛券
私享最新 技术干货