作者:HDMI Python爱好者社区专栏作者
知乎:https://www.zhihu.com/people/hdmi-blog/posts
很早之前写过一个金山翻译的爬取小程序,最近突然想到是不是可以拿来做个桌面小工具,于是花了一个下午加一晚上,折腾了一下。
运行平台:Windows
Python版本:Python3.6
IDE:Sublime Text
其他:Chrome浏览器
简述流程为:
步骤1:用Python实现爬虫爬取http://www.kuakao.com/english/ch/39183.html这个网页上的单词并存入MySQL数据库;
步骤3:用Python tkinter实现程序窗口,使其具备在线翻译和本地翻译两个功能;
步骤4:连接数据库,实现根据单词或词义的本地查询;
步骤5:将MySQL的连接所需参数写入配置文件,实现配置文件的读取。
首先我们使用Chrome浏览器看下我们要爬取考研单词的网页,和之前一样简单看下结构。
结构不是很复杂,所以我们和以前一样使用请求网页—解析网页——存储单词的过程来就行。
这里唯一有所不同的是就是我这次插入的数据库选择的是MySQL,所以会之前有一点不同。如下所示:
连接数据库时我读取了配置文件里的参数,所以没有直接给出,下面再介绍相关配置与读取配置。在MySQL中,连接好数据库后,我们首先获取一个游标,然后写上sql插入语句:
当然在插入之前,需要创建一个数据库和数据表,并设置好字段类型等。这个简单的sql语句就是将爬取下来的单词插入到英文词汇数据库中词汇表中,然后在执行sql语句即可,最后需要提交修改。
由于单词不在一个网页上,所以我们还需要一个循环,构建url,遍历所有单词页面。
来看下数据库里的词汇情况:
接下来我们来看下配置文件及读取部分。
spider.conf
这个配置文件里写的是连接MySQL的一些参数,包括主机名、端口、用户、密码等。
再来看下如何读取,读取配置文件是通过Python自带的configparser模块。
定义一个SpiderConfi类,然后定义相关变量。再通过load_conf方法读取配置文件,读取方式很简单,先建立一个ConfigParse对象,然后读取配置文件的名称,最后通过get方法读取参数即可,这里需要注意的是端口port需要读取成数字,而不是字符串,所以使用getint方法。最后我使用了日志模块,用于确认是否正确读取。
最后调用方法,看下执行结果吧。
第二步用来实现在线翻译的功能的爬虫即之前介绍过的爬取金山翻译,这里就不再多说了。直接来看如何实现桌面窗口吧。
这里我使用的Python自带的tkinter模块,简单的做了个界面。
相关具体的方法参数大家可以参考官网:tkinter,这里就不再多说啦。主要就是定义窗口标签控件以及布局。实现窗口是这样的:
两个按钮绑定不同的方法,分别是:
cmd1是在线翻译,直接执行了其中的一个方法获取金山翻译的释义,cmd2是调用了接下来要讲的WordRetriever类,然后再执行查词的方法,接着往下看吧!
check_word方法首先将result_text标签里的数据清空,然后再获取输入到text_entry里的单词或词义,之后连接好数据库。
连接好数据库之后,就可以执行sql查询了,我将输入到text_entry里的数据分成两种情况,当正则表达式匹配到汉字时,证明输入的是词义,需要查找的是单词,这里我们就使用MySQL的模糊查询方法,通过%匹配符匹配数据库中所有符合的词义,并给出相关结果;而如果是单词,则可以直接查询。
最后就来试试查询结果吧:
好了,就是这么多了~写得比较匆忙,有点糙,将就一下下~
Python的爱好者社区历史文章大合集:
小编的转行入职数据科学(数据分析挖掘/机器学习方向)【最新免费】
小编的Python的入门免费视频课程!
小编的Python的快速上手matplotlib可视化库!
崔老师爬虫实战案例免费学习视频。
陈老师数据分析报告扩展制作免费学习视频。
玩转大数据分析!Spark2.X + Python精华实战课程免费学习视频。
领取专属 10元无门槛券
私享最新 技术干货