360搜索引擎优化(基于Scrapy框架对校园搜索引擎进行相关设计的建立流程分析)
优采云 发布时间: 2021-09-26 23:19360搜索引擎优化(基于Scrapy框架对校园搜索引擎进行相关设计的建立流程分析)
介绍
在当今信息社会,人们可以通过互联网获取大量信息。对于校园数字化建设,大量的冗余和杂项信息使得校园内信息的查找和定位变得困难网站。目前,大多数校园网站使用普通的现场搜索查询信息,难以满足日益增长的需求。
针对以上问题,为了给学校营造一个高效、干净的信息环境,本文将设计基于Scrapy框架的校园搜索引擎。建立校园搜索引擎的可行性主要有以下几个方面:(1)校园站的网络链接相对较少,站点层次分明,数据抓取过程的计算量也较少,可以加快服务器的响应速度。。(2)所需的软硬件配置不高,方便控制项目开发成本,有利于项目实施。(3)@ >参考系统成熟的相关模型和算法,对其进行改进和优化,并应用到设计中。
由以上分析可知,建立校园搜索引擎是符合客观实际的需要,是可行的。
1 建立搜索引擎流程分析1.1 分析搜索引擎框架
构建搜索引擎的首要任务是分析设计过程。本文选择Python语言的Scrapy爬虫框架作为数据抓取的核心,然后使用Whoosh构建搜索引擎索引库,最后使用Flask设计Web查询界面。
1.2 网络爬虫
网络爬虫是一种自动抓取网页信息的程序。搜索引擎使用爬虫抓取网页信息。网络爬虫是搜索引擎的核心。网络爬虫从初始网页的 URL 开始。在抓取网页信息的过程中,不断将在页面上抓取到的子URL放入待抓取的URL队列中,所有抓取到的信息都会以文件的形式存储。到数据库。
广度优先遍历也称为层次遍历。它从网页的初始网址开始抓取,将网页的子网址提取到待抓取的队列中,并将抓取到的网址存入表格中。每次处理新的 URL 时,都会询问它是否已经存在于表中。如果存在,则表示该网址已被抓取。不再对此 URL 进行处理。否则,进行下一步处理。这种遍历算法将网页中的所有URL都存储起来,占用存储空间大,程序运行速度更快。
深度优先遍历是在抓取网页的初始 URL 之前搜索单个链。深度优先遍历沿着网页的子网址爬取,直到没有要抓取的网址,然后返回到某个网页网址,再选择网页中的其他网址来抓取信息。深度优先遍历不会保留网页的所有网址,抓取到的网址会自动从数据库中删除。这种遍历算法的空间复杂度较低,空间相对较小。本设计使用了这种遍历算法。
不完全PageRank策略是一种基于PageRank的爬取策略。该策略的工作原理是将抓取的网页和待抓取的网页相加,在集合中进行PageRank计算,然后根据PageRank计算结果对待抓取的URL队列中的网页进行排序,得到一个分组序列,这是程序将依次抓取的 URL 列表。
1.3 搜索引擎索引
搜索引擎的索引是关键词与网页文件的对应关系,其核心是进行布尔集合运算。目前有两种类型的索引:正向索引和倒排索引。
前向索引是文章生成的关键词集合,捕获信息时会记录关键词的位置、出现频率等信息。前向索引的结构是每个文档对应的关键字列表(关键词,出现位置,出现次数)。前向索引需要遍历扫描所有前向索引文件才能知道哪些文档有一定的关键词,搜索效率比较低。
反向索引与正向索引相反。它的数据结构是“word-document matrix”,它是收录这个关键词的关键词对应的文档集合。反向索引不仅可以记录对应关键词文件的顺序,还可以记录关键词出现的频率,对应文档的出现频率,以及关键词的位置。排序时,这些信息会分别加权,产生最终的排序结果。
Whoosh 是 Python 语言中的开源索引库。Whoosh 提供了很多建立文档索引的函数和类,通过查询输入关键词来搜索文档。
使用Whoosh建立索引有以下优点:(1)运行速度比solr和elasticsearch快,而且是python语言解析的,不用其他编译器。(2)使用BM25F作为排序算法更方便自定义。(3)@>占用存储空间小。(4)支持任意python面向对象的存储。
whoosh 索引的概念比 solr 和 elasticsearch 更简单易懂。不需要深入研究分布式爬虫,适合搜索引擎初学者。
1.4 网页查询界面
查询结果的排序规则与单文本词汇频率指数(TF)和逆向文本词汇频率指数(IDF)有关。单个文本的词汇频率根据网页长度用关键词在网页中出现的次数归一化,即关键词的数量除以总的出现次数网页中的单词。使用IDF提供的关键词重新加权,那么网页和查询相关的计算就会从之前的词频计算变成一个加权和。
TF-IDF与文档中关键词的出现次数成正比,与整个语言中单词出现的次数成反比。
Web 查询界面设计使用 Flask 框架。查询界面中的索引模块会根据查询语句进行搜索和排序,然后将查询结果返回给界面进行展示,用户会得到查询信息的相关内容。
2 Scrapy爬虫框架在搜索引擎中的应用2.1 Scrapy框架的工作原理
Scrapy 是一个基于 Twisted 的异步处理框架。它是一个用 Python 编写的爬虫框架。用户可以根据自己的需要修改配置。Scrapy 框架还可以应用于数据挖掘、数据分析、数据存储、网络异常检测等应用领域。
URL 重复数据删除和数据存储。(6)Middlewares(中间件):处理引擎和下载器之间的请求和响应,设置代理ip和用户代理。
Scrapy爬虫框架可以快速抓取网站信息,结构清晰,模块间耦合度低,扩展性强,帮助用户灵活完成各种需求。
2.2 Scrapy 框架的 web URL 去重策略
Scrapy 框架中的 URL 去重是通过 RFPDupeFilter 类中的 request_fingerprint 方法实现的。
调度器对每个URL请求的对应信息进行加密,得到指纹信息,然后将其维护的待抓取URL的指纹信息与加密后的指纹信息进行比对。如果指纹信息已经存在,则表示请求重复,从队列中删除该请求。如果没有这样的指纹信息,则将请求的对象放入队列中等待被调用。
一般在请求时,在参数中加入dont_filter=False可以关闭去重策略,可以重复抓取同一个网站中不同子URL的网页信息。在对大量网页进行去重时,还可以使用Bloom Filter算法,即使用Bloom filter来节省占用的内存,可以大大减少内存占用,只需要使用八分之一即可-第四种传统方法。.
重复数据删除一般有两种方法:一种是使用Python的集合类型在管道中添加重复数据删除策略,这种方法操作简单,不易出错;另一种是在数据库中存储数据时进行去重,比如在Mysql中设置唯一索引或者在Redis中使用集合等,这种方式对爬虫的效率影响不大,但是会增加工作量数据库的。
2.3 Scrapy框架爬虫防范与禁止策略
在爬虫程序运行过程中,会频繁访问目标网站,甚至会导致目标网站的服务器过载。这会导致程序的IP被网站禁止访问,从而影响数据抓取的效率。下面是两种防止爬虫被禁止的策略:(1)编写爬虫程序时,将settings.py文件中的download_delay参数设置为2秒以上,这样程序爬取数据的频率应该不会太高。但是这样也会增加程序的运行时间。(2) 动态设置User-Agent代理池。User-Agent是一个字符串,收录浏览器、操作系统等信息.
3 结束语
本文通过使用Scrapy爬虫框架设计了一个简单的校园搜索引擎系统。利用Scrapy爬虫框架和Pythn语言扩展库实现校园搜索引擎系统的稳定运行,对促进校园搜索引擎的使用具有积极意义。系统还有一些需要改进的功能,如增加抓取校园官方微博和微信公众号中的热点新闻显示在查询界面上,以便用户及时获取校园动态,以及改进搜索算法并改进搜索结果。智力等等都是需要进一步研究的东西。