知行编程网知行编程网  2022-03-25 01:38 知行编程网 隐藏边栏 |   抢沙发  62 
文章评分 0 次,平均分 0.0

我用Python开了外挂,元宵节我做了一个灯谜答题王

农历正月是十五元宵节,在这一天看花灯、猜灯谜是我们的传统习俗,现在很多商家都会在这几天借势营销,搞一些猜灯谜的活动吸引顾客。可惜灯谜真的很难猜,当场拿出手机百度又会略显尴尬而且也未必会找到答案,于是我想到写一个远程答题小助手,通过手机发送谜面就能自动返回谜底。



1


- 建立题库 -


对于灯谜这种深负中华文化的东西,很难通过机器分析谜面的方法找答案,所以我们要提前搜集灯谜题目,将谜面和谜底都存到文件(或数据库)中,以便后期查询调取。

灯谜的搜集可以使用爬虫爬取网络题库,这类网站通常没什么反爬措施,甚至都没使用js动态加载,爬取难度比较小。以汉迷网为例,进入灯谜主题页面后,只需要依次获取每个谜题的详情页url,然后逐一获取谜面和谜底即可。

我用Python开了外挂,元宵节我做了一个灯谜答题王

唯一需要注意的是部分灯谜详情页中会有一栏小贴士(下图红框中内容),而有些灯谜没有这一栏,这会造成页面内容结构的不统一,在爬取内容的过程中需要加以甄别,否则可能导致取不到准确的数据。

我用Python开了外挂,元宵节我做了一个灯谜答题王

由于这个爬虫很简单,就不做详细说明了,直接上代码:

我用Python开了外挂,元宵节我做了一个灯谜答题王

以上就是爬虫类的主要代码,获取到的数据样式如下:

我用Python开了外挂,元宵节我做了一个灯谜答题王

目前我只爬取了汉迷网中的灯谜题目,总计2687条灯谜,如果想使答题小助手更加强大,还可以到其他网站获取更多的题目,然后进行数据清洗合并即可。


我用Python开了外挂,元宵节我做了一个灯谜答题王




2


- 数据收发 -


建立完题库就要考虑如何实现手机与服务端的数据交互,开发APP、搭建网站这种方式有些牛刀小用,我们知道python可以实现邮件的自动化收发服务,可以借助电子邮件实现这一功能。

1)接收

利用python的poplib模块可以实现目标邮箱的自动登陆,并读取收件箱中最新的一封邮件,但是读取到的邮件信息中有些数据是经过编码处理的,因此需要对其进行解码。邮箱登陆和邮件读取部分的主要代码如下:

我用Python开了外挂,元宵节我做了一个灯谜答题王

其中,receive_email函数的返回值就是收件箱中最新一封邮件的标题。

2)发送

再来说下邮件的自动发送,与邮件的自动接收类似,要实现这一功能也要先进行自动化登陆,不同的是这次用到的是smtplib模块。

要发送邮件需要填写发件人、收件人和主题(内容可以不写)三项内容,发件人当然是我们设置好的邮箱,收件人和主题可以自行指定,其中收件人信息可以使用上一步中接收到邮件的发件人,这样就能实现类似自动回复的功能。邮件自动发送部分的主要代码如下:

我用Python开了外挂,元宵节我做了一个灯谜答题王

需要注意的是,要想进行邮件的自动收发,必须先对目标邮箱进行相关设置,这部分内容本文不进行详述,有需要的朋友可以参考里的另一篇文章:神操作!发个邮件用Python实现远程自动关机



3


- 系统搭建 -


题库和数据传输的问题解决后就可以着手建立答题系统了。先说下设计思路

  • 建立一个进程持续接收邮件信息,如果接收到标题以“谜面”开头的邮件则提取邮件标题中的谜面题目;

  • 将提取到的题目与题库中的谜面进行匹配,若匹配成功则说明题库中有这道题目,返回题目的答案;

  • 将匹配到的答案放到邮件自动发送系统中,发送给第一步中发送谜题的发件箱;

  • 给自己发送一封标题为“已发送答案”的邮件,以避免同一条谜题被重复处理。

主进程的建立非常简单,一条while循环即可:

我用Python开了外挂,元宵节我做了一个灯谜答题王


下面这段代码用于对自动接收到的邮件进行识别,如果该邮件以“谜面”开头,则提取灯谜题目并到题库中搜索答案:

我用Python开了外挂,元宵节我做了一个灯谜答题王

下面这段代码会以固定格式(答案:谜底-谜面)返回匹配到的谜底:

我用Python开了外挂,元宵节我做了一个灯谜答题王


到目前系统就搭建完成了,需要注意一点:如果要成功得到谜底,必须以固定格式发送邮件,例如:“谜面:春节一天作灯谜 ”,当然这个格式可以根据自己的习惯自行设置。

现在启动程序,尝试向目标邮箱发送标题为“谜面:典籍选载千古对”的邮件,几秒钟后会收到一封目标邮箱发送的邮件,给出的“联名上书”即是灯谜“典籍选载千古对”的谜底了。



近期热门:

不废话,学Python就是这条捷径

本篇文章来源于: 菜鸟学Python

本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

知行编程网
知行编程网 关注:1    粉丝:1
这个人很懒,什么都没写

发表评论

表情 格式 链接 私密 签到
扫一扫二维码分享