【云计算】python实现大数据搜索引擎解析
小标 2019-01-07 来源 : 阅读 1062 评论 0

摘要:本文主要向大家介绍了【云计算】python实现大数据搜索引擎解析,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。

本文主要向大家介绍了【云计算】python实现大数据搜索引擎解析,通过具体的内容向大家展现,希望对大家学习云计算有所帮助。


需求

1. 制作一个搜索引擎,输入多个关键字进行搜索

2. 能查询的网页不下于10个

3. 显示搜索结果列表

4. 进入网页后显示更多与关键字相关的内容

5. 允许下载网页内容

设计

1. 使用类SearchEngine来定义整个系统的属性与行为

2. SearchEngine的属性设计如下:

(1) lstWebsites list, 需要爬虫的网页集合,元素类型为字符串

(2) lstSearchedItems list, 搜索的所有网页条目,元素类型为元组(编号,网址,关键字相关文字)

(3) lstKeywords list, 输入的关键字集合,空格和分号区分关键字

(4) strKeywords string, 关键字的输入原文

(5) cmdCommand string, 进入命令状态, cmdCommand = ‘command’

(6) cmdKeywords string, 进入关键词输入状态, cmdCommand = ‘keywords’

(7) cmdQuit string, 退出程序,cmdQuit = ‘q’

(8) cmdBack string, 返回,cmdBack = ‘b’

(9)cmdNextPage string, 下一页, cmdNextPage = ‘n’

(10)cmdLastPage string, 上一页, cmdPrevPage = ‘l’

(11)cmdRefresh string, 刷新页面, cmdRefresh = ‘r’

(12)cmdSavePage string, 下载当前网页,cmdSavePage = ‘s’

(13)iItemsEachPage integer, 每页显示的条目数量

(14)iCurrentPage integer, 当前页码

(15)strConfigFile string, 配置文件的路径,strConfigFile = ‘./config.ini’

(16)strSurface string, 界面状态,strSurface = enum{‘MAIN_SURFACE’, ‘SEARCH_SURFACE’,’DETAIL_SURFACE’}

3. SearchEngine的行为设计如下:

(1) initCommand(self) 命令初始化

(2) work(self) 系统进入工作状态(默认关键字输入状态),打开主界面

(3)mainSurface(self,info) 主界面。info界面显示的提示信息

(4)searchSurface(self,info) 搜索界面

(5)downWebsite(self,urlpath) 下载网页。urlpath,要下载的网页地址。返回下载状态

(6)detailSurface(self,info,urlpath,content) 具体网页进入后的界面, content 具体的网页内容

(7) getWebContext(self,urlpath) 获取urlpath指定网页的更为详细的与keywords相关的信息

(8) useCommandInput(self,surfaceStatus) 进入命令输入状态, surfaceStatus当前界面状态

(9) useKeywordsInput(self) 进入关键字输入状态

(10)divideKeywords(self) 划分输入的关键字字符串为有效关键字列表

(11)getAbstractContext(self,urlpath) 获取简要的与关键字相关的信息. 在此过程中,搜索到关键字就将相关信息存入lstSearchedItems,并且返回true,若否返回false

(12)readConfigFile(self) 读取配置文件

(13)startSearch(self) 开始搜索

4. 日志类 SearchEngineLog

日志文件: ./SearchEngine.log 每一条日志内容: 时间(精确到妙),异常类型,详细内容 每一条日志占用一行

属性:

strLogFile string, 日志文件路径

iMaxLogItems integer,最大保存日志条目数量

iCurrentItems integer,当前日志文件中已保存的日志条目数量

行为:

searchLog(self,strKeywords) 记录搜索事件, strKeywords搜索内容

webLog(self,webPath) 记录打开网页事件,webPath网页路径

errorLog(self,errInfo) 记录发生错误事件,errInfo,错误信息

downloadLog(self,info) 记录下载事件

writeLog(self,type,info) 写入事件,type事件类型,info事件信息

createLogFile(self) 创建日志文件,若已有日志文件则不做任何处理

clearLogFile(self) 清空日志文件,若没有日志文件,则CreateLogFile

getCurrTime(self) 返回当前时间,格式YYYY-MM-DD hh:mm:ss

setMaxLogItemNum(self,num) 设置最大保存日志条数

getMaxLogItemNum(self,num) 获取最大保存日志条数

getCurrentLogItemsCount(self) 获取当前已保存日志条数

5. 命令和关键字

在关键字状态下输入command进入命令状态 在命令状态下输入keywords进入关键字状态

命令:

q — 退出

b —- 返回

n — 下一页

l —- 上一页

r — 刷新

s — 下载当前网页

6. 配置文件

路径 : ./config.ini 内容 : 网址列表,每一个网址占用一行


实际上,要完成这个搜索引擎本来也不需要这么多代码,如上所述,我加了一个日志类,用来记录工具运行过程中的一些信息,眼尖的童鞋可能会发现这个日志类居然还兼具有历史记录的功能。是的,我就是不想让日志类太闲。

这个subject主要有两点我做的比较糟糕:

一、没有做更好的异常处理

本来是想继承几个异常类的,最后由于不清楚代码中某些函数的返回类型而放弃了,这个有那么点儿尴尬,对于一些库函数不够深入了解。

二、搜索的目标是未经处理的网页代码

本来我是想先写一个将html代码转换为txt文本的类,几乎已经写完了,但是发现转换完之后其实也就那么点儿东西,所以就没有转换了。其实,这个转换还是有用,但是时间成本有点大,所以就放弃了。如果以后我把搜索效率提高了,那我肯定会进行转换。


在功能上,它除了查找之外,还有浏览、下载等功能。浏览的话是直接调用系统默认的浏览器进行浏览,下载是直接将网页的内容下载到本地,所有有效图片都会被下载下来。


其他的话,这个项目是我第一次在代码中使用正则表达式,当留个纪念好了。整体而言,这个subject不是什么有用的工具,但是可以作为代码参考(唉,总是想不出什么可以轰动一时的东西,就天天写写练手代码,真是一辈子打工命)。


          

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标大数据云计算大数据安全频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved