- · 《决策与信息》栏目设置[09/01]
- · 《决策与信息》数据库收[09/01]
- · 《决策与信息》投稿方式[09/01]
- · 《决策与信息》征稿要求[09/01]
- · 《决策与信息》刊物宗旨[09/01]
基于网络爬虫的搜索引擎的设计与实现
作者:网站采编关键词:
摘要:1 背景 身处于信息时代,数据共享与查询越来越便捷,基于数据的服务也越来越多,各行各业越来越依赖于爬虫对数据进行提取[1]。但是,随着信息数据量迅速增长,这些数据中包含着
1 背景
身处于信息时代,数据共享与查询越来越便捷,基于数据的服务也越来越多,各行各业越来越依赖于爬虫对数据进行提取[1]。但是,随着信息数据量迅速增长,这些数据中包含着许多模糊不清的信息,构成了一个庞大的网络资源库。因此人们需要从海量数据中提取所需要的信息,同时平衡成本。爬虫能够将用户所需要的数据提取出来,但是仅仅依靠单机爬虫,采集速度难以处理繁多的页面,而硬件的发展也无法跟上信息量的增长。因此,合理限定抓取范围,开发面向与各个领域的轻量化搜索引擎,扩展单机爬虫为分布式爬虫都是可行的解决方法。
2 总体设计与功能
2.1 功能设计
一个单词在不同领域具有不同含义,用户直接在通用搜索引擎上搜索可能会显示完全不同的结果。需要精细化搜索引擎范围,本系统开发一套面向于某一领域和中小企业的搜索引擎,具有数据范围相对较集中,数据量相对较小的特点。
通过对需求的分析,将该搜索引擎分为两个页面。其一是搜索网站搜索主页,包括搜索分类选择、输入框输入信息并搜索、热门搜索与搜索记录共同组成了搜索门户方便用户搜索,其二是搜索网站结果显示页,在该页面上显示搜索的相关信息,搜索输入框,满足用户信息浏览和继续搜索的需求。第一部分,将搜索的信息分为几个板块,用户可以选择不同板块来进行对应的搜索。第二部分,在页面上显示热门搜索和历史记录,用户可以点击对应的关键字进入对应的结果页链接。在显示搜索结果的时候,显示搜索标题、简介、结果数据统计信息等,方便用户浏览。
2.2 模型设计
本系统采用B/S架构,服务器作为核心事物的重要部分[2]。后端框架选用Django 搭建,前端页面通过嵌入来显示网页,并在Django框架中设置数据处理函数处理数据库中的信息。
本系统设计针对某领域提供信息,不同用户搜索的内容可能有不同的爬虫爬取,相同的搜索领域由同类型的爬虫抓取数据。所有抓取的数据信息根据不同数据库的特点分别保存。
作为一个系统,稳定是最重要的因素,因此需要考虑稳定运行,数据备份等因素,此外需要具有良好的可拓展性,能够随着用户增长的需求来扩充数据的范围,因此代码的编写需要规范化,方便后期维护升级。
本系统分为三部分,包括爬虫部分,存储部分和显示部分。各部分功能与主要技术设计如图1所示:
图1 系统结构设计图
1)爬虫部分:该模块用于爬取目标网站信息,包括实现自动登录,设置措施突破反爬限制,设置网页爬取策略根据不同网站特点爬取对应信息,数据字段提取与保存信息等功能。
2)存储部分:该模块的功能是将爬虫爬取的信息分别存储到不同的数据库中。MySQL 数据库用来存储单机上爬取的信息,并作为备份。Elasticsearch 数据库用于汇总存储数据并构建索引。Redis数据库是内存数据库,存取数据十分迅速,用于保存常用信息,同时作为分布式爬虫队列管理工具。
3)显示部分:本模块设置服务端处理数据的过程,使用基于Python 的Django 框架。选择B/S 架构,同时将处理后的数据在浏览器页面上显示。后端框架选取MVT模式。
3 详细实现
3.1 爬虫的实现
图2 信息抓取流程图
1)爬虫规则设计
本系统实现的爬虫基于Scrapy框架,在爬虫模块中主要完成爬取目标网站的功能。根据不同网站的结构,选取深度优先策略和广度优先策略[3]。设计信息解析模块,对目标网站的布局与逻辑进行分析,发现网站网页结构主要可以分为主页、列表页、详情页。网站的主页设为网站的一级页面,是用户进入网站的入口。所有内部页面可以通过主页上的链接进行访问。网站的列表页是二级页面,负责网站某一分类下的所有相关页面的URL信息。详情页定义为三级页面,是用户访问该网站的目标页面,同时也是爬虫主要抓取对象和信息提取页。整个过程如图2。
2)数据处理模块
首先定义爬虫名称,爬取的域名和起始页面。其次,获取网页列表页URL,下载后使用parse 函数处理,同时定理next_url来循环爬取其他URL。然后在详情页面上具有大部分的目标信息,针对这些信息,使用CSS和XPATH选择器提取页面详细信息。部分字段提取样式如表1:
表1 字段提取命令字段名操作标题item__css("title","#news_title a::text")文章正文item__css("content","#news_content")标签item__css("tags",".news_tags a::text")创建日期item__css("create_date","#news_::text")URL图片的URL item__value("url",)item__value("front_image_url",("front_image_url",[]))点赞数item__value("praise_nums",j_data["DiggCount"])收藏数item__value("fav_nums",j_data["TotalView"])评论数item__value("comment_nums",j_data["CommentCount"])MD5处理后的URL item__value("url_object_id",_md5(("url","")))
文章来源:《决策与信息》 网址: http://www.jcyxxzz.cn/qikandaodu/2021/0119/637.html
上一篇:微表情与微行为所传达的信息探究
下一篇:探讨工程建设项目投资管理与决策