Python实现简易搜索引擎

一、实验内容

实现对Python知识点与编程案例的搜索,建立Python知识点与案例资料库。对使用者输入的搜索词分词、去停用词、取关键词,纠正用户的错误输入,实现检索,记录每次的搜索词。

本地资料库没有搜索结果则利用爬虫在百度搜索爬取结果,做到每次搜索都有内容呈现给使用者,并实现图形用户界面与使用者交互。

二、实验目的

实现Python知识的搜索,建立Python知识点与案例资料库,没有搜索到则利用爬虫到百度搜索爬取,做到每次搜索都有内容呈现给用户,并实现图形用户界面,争取模拟真正的搜索引擎。

三、实验过程

3.1 过程分析

3.1.1 阶段一

要实现Python知识案例搜索引擎,就要先知道本实验所需的搜索引擎的功能,本实验需要检索本地的Python知识案例库,则首先要实现对文件夹及文件的读取,这里我们利用了os模块功能自动获取资料库的绝对路径,并读取文件夹下的资料的文件名,放入一个txt文档中记录。

然后需要实现对搜索词的处理,得到关键词。这里,我们使用了中文自然语言处理常用分词模块——“jieba”模块,并自定义了用户词典及停用词,能更好地得到关键词,使搜索引擎在Python知识案例的搜索上有更好的表现。

最后利用“difflib”模块得出关键词与案例文件的匹配度,对匹配度排序,再得出索引,则可以实现对本地Python知识案例库的检索。

3.1.2 阶段二

阶段一实现了Python知识案例搜索引擎的基本功能,接下来就要考虑与使用者的交互了。这里为了简化代码,不破坏阶段一代码的逻辑结构,我们使用了图形用户界面的“easygui”模块,调用“enterbox”、“ccbox”等函数实现图形界面。

3.1.3 阶段三

阶段一与阶段二完成了一个简易搜索引擎所有内容,在阶段三,我们就考虑在阶段一与阶段二实现的搜索引擎的基础上添加新的功能。

首先我们考虑添加爬虫功能,因为我们搜集Python知识案例库仍然不是很完善,在搜索时会出现很多内容都搜索不到的情况,所以我们在继续丰富Python知识案例库的同时,在阶段一、二的基础上添加爬虫功能,如果有本地库搜索不到的情况,则在网络上爬取相关内容提供给使用者。

我们选择在百度搜索上爬取,利用“requests”、“urllib”、“lxml”模块,建立百度搜索接口,模拟浏览器,读取百度搜索结果的标题及链接,在图形用户界面中像百度搜索那样显示出来,点击标题即可以打开对应网址。

添加网络爬虫后,本搜索引擎就不再局限于本地资料库的Python知识案例,可以搜索任意百度搜索能搜索到的信息。

3.1.4 阶段四

为了实现更为实用、功能更全面的Python知识案例搜索引擎,我们在百度搜索进行了多次搜索。我们发现,百度搜索可以对用户的错误输入进行纠正,所以我们也进行了这方面的尝试。

我们使用“re”模块及“collections”模块,结合“big.txt”资源文件(一个英文的词库),实现了对英文单词的纠错,运行速度达到ms级

同时,我们利用“pycorrector”模块的“correct()”函数实现了对中文词语的纠错,但是由于中文词库过大,运行所需时间通常达到了15s以上,我们不得不放弃了中文词语的纠错,只实现了对英文的纠错。

3.1.5 阶段五

为了更好地实现本地搜索,我们单独写了一个用于爬取博客园文章内容的网络爬虫,用于搜集Python知识与编程案例。

3.2 运行结果及结果分析

3.2.1 运行结果

(1)输入界面:我输入的“paddlle”是一个错误单词

(2)纠错:成功把“paddlle”纠正为“paddle”


(3)本地搜索结果:(看来本地没有paddle相关的搜索结果,只有神经网络的搜索结果)

(4)若不满意可以查看网络搜索结果:

(5)网络(百度)搜索结果(爬虫):

(6)点击打开网页:

(7)循环,返回搜索框:

3.2.2 结果分析

实验实现了搜索句的分词、提取关键词,实现了对错误输入的检测及纠正,实现了在本地资料库的检索,实现了网络爬虫爬取百度搜索结果,实现了图形用户界面,完整地完成了实验内容,达到了实验目的。

四、优缺点及改进方向

本实验较好地模仿了一个真实的搜索引擎,除了最基本的搜索本地资料外,还添加了爬取百度搜索结果功能、自动纠正错误输入功能,使本搜索引擎功能更完善,更贴合用户需求。本地资料库与网络爬虫相结合可以尽可能地找出用户想要地资料。

但是我们仍有许多不足之处。在自动纠正错误输入功能上,我们只实现了自动纠正英文,没有把纠正中文功能加入引擎中。在检索上,偶尔会出现一些莫名的bug,无法找到原因。在网络爬虫上,在关键字过多时,有时无法爬取到结果。在图形界面上,界面过于简单,仍待优化。

不过我们还是可以继续改进代码的,由于时间有限,只能到此为止了。在自动纠正错误输入功能上,可以优化中文纠错时间,争取减少到1、2秒,并且可以在纠错功能、爬虫功能实现的同时,图形用户界面显示处理进度,即进度条,这可能会用到多进程。在图形界面上,可以用“wxpython”模块代替“easygui”模块,编写图形用户界面,并把界面制作的更美观。在检索上,可以用数据库代替txt,加快检索速度,还可以对内容提取关键词,结合标题,双重评价匹配度,提高检索准确度。

附:

代码见github:https://github.com/ccc-hhh/Python-

Python实现简易搜索引擎相关推荐

  1. python实现简易搜索引擎(含代码)

    今天我们使用python来搭建简易的搜索引擎. 搜索引擎的本质其实就是对数据的预处理,分词构建索引和查询. (这边我们默认所有的数据都是utf-8的数据类型) 我们在一个网站上去获取所有的URL: d ...

  2. 怎么用python自制计算公式_手把手教你用python制作简易计算器,能够记录你使用的情况...

    话不多说,首先先看效果图,它能够记录你在使用过程中的历史,方便你查看是否有错: 接下来就仔细分析一下是如何制作的: 简易计算器 第一步:导入资源库 在过程中使用到了tkinter这个资源库,win+R ...

  3. 用python写搜索引擎_用python做一个搜索引擎(Pylucene)的实例代码

    1.什么是搜索引擎? 搜索引擎是"对网络信息资源进行搜集整理并提供信息查询服务的系统,包括信息搜集.信息整理和用户查询三部分".如图1是搜索引擎的一般结构,信息搜集模块从网络采集信 ...

  4. python实现shell_基于 Python 的简易 Shell 实现

    通过敲一边代码还是了解到了一点新东西的,编程是一项手艺活,到处都是细节. * 了解了getpass, socket, signal, platform这几个包的一点用法: 比如getpass.getu ...

  5. 利用python实现简易版的贪吃蛇游戏(面向python小白)

    前言 这篇文章主要给大家介绍了关于如何利用python实现简易版的贪吃蛇游戏的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学 ...

  6. 安装python程序后要进行什么设置-安装好Pycharm后如何配置Python解释器简易教程...

    这两天有许多Python小白加入学习群,并且问了许多关于Pycharm基本使用的问题,今天小编就以配置Python解释器的问题给大家简单絮叨一下. 1.一般来说,当我们启动Pycharm,如果Pych ...

  7. 在哪里能收到python实例代码-用python做一个搜索引擎(Pylucene)的实例代码

    1.什么是搜索引擎? 搜索引擎是"对网络信息资源进行搜集整理并提供信息查询服务的系统,包括信息搜集.信息整理和用户查询三部分".如图1是搜索引擎的一般结构,信息搜集模块从网络采集信 ...

  8. python怎么画简单图片-Python绘制简易的二维图像

    大家好,我是飞向天空的牛. 最近学习了一下用Python绘制简易的二维图像,代码如下图所示:绘图代码 文本如下: import matplotlib.pyplot as plt import nump ...

  9. 简易有WEB文件服务器,Python实现简易版的Web服务器(推荐).pdf

    Python实实现现简简易易版版的的Web服服务务器器(推推荐荐) 下面给大家介绍python实现简易版的web服务器,具体内容详情大家通过本文学习 ! 1.请自行了解HTTP协议 /article/ ...

  10. 使用Python实现简易的数据标注工具

    使用Python实现简易的数据标注工具 以增加工作效率为目的,最近一直在着手构建一个AI ToolBox 这两天,我为其中的预处理工具目录添加了数据标注模块,本文所介绍内容的代码见这里 该数据标注模块 ...

最新文章

  1. 谷歌宣布推出Dart编程新语言
  2. 好玩的python代码示例-这可能是最好玩的python GUI入门实例!
  3. 工作227:小程序学习1开始布局页面
  4. ffmpeg命令_使用ffmpeg命令为多个短视频修改视频备注说明
  5. pythonhtml生成word_python如何实现word批量转HTML
  6. JavaScript基础二
  7. 清新浪漫风情人节海报PSD分层模板!
  8. 新 Nsight Graph、Nsight Aftermath 版本中的性能提升和增强功能
  9. 微软代码审查工具_Microsoft如何进行代码审查?
  10. yarn的安装和使用
  11. 抓取手机端app日志的方法总结
  12. 说说 PWA 和微信小程序--Progressive Web App
  13. Beer Bill(签到题)
  14. XMind8 pro 免费破解版!速度
  15. VS2019+OpenCV4.5.1 环境配置+一劳永逸法(附下载地址)
  16. 上海富爸爸_放弃高薪选择财务自由之路(转)
  17. c语言既是素数又是回文数的三位数,编写程序,找出所有既是素数又是回文数的三位正整数.例如:131等...
  18. 联合证券|内外利好共振 今年A股可更乐观一点
  19. 访问学者申请美国签证的资金证明怎么开?
  20. sheepdog简介

热门文章

  1. 8年Android开发教你如何写简历,附超全教程文档
  2. (第九章)UI--PS 基础 通道抠图
  3. 你是否也陷入了《能力陷阱》?
  4. 【VBA研究】用VBA创建数据透视表
  5. postgresql去除首尾空格
  6. html match函数,match函数的使用方法 match函数的实例
  7. 实习日记(4-28)
  8. java压缩图片thumbnails_Java压缩图片、减小图片文件体积大小,Thumbnails使用教程...
  9. Excel选择某单元格整行变色是这样做的
  10. Redis 的key设计技巧缓存问题