基于Scrapy、Redis、elasticsearch和django打造的搜索引擎

1.需求分析

1.1  爬取两个目标网站

伯乐在线:http://www.jobbole.com/

刺猬实习:https://www.ciweishixi.com/

1.2  将数据存储到合适的数据库

由于我们要做的是搜索引擎,传统的关系型数据库不是太适合,而且需要对部分字段进行解析,elasticSearch为我们的首选

1.3  快速搭建网站

使用django后端框架,进行快速网站开发。Django的模板系统设计简单,容易扩展。代码,样式分开设计。另外Djangoredis或者其他的缓存系统联用,可以提高页面的加载速度,让用户的体验度更好了。

2.系统设计

基于Scrapy、Redis、elasticsearch和django打造的搜索引擎

(1)使用 scrapy 爬取job伯乐以及刺猬实习网站数据,使用了两种不同的爬取方式(在刺猬实习的爬取中使用了CrawlSpider进行整站爬取)

(2)使用 elasticsearch 存储数据,完成搜索建议等功能

(3)利用 django 搭建搜索引擎

(4)使用Redis存储爬虫条目统计值,提高频繁获取时的读取速度

(5)支持同步、异步数据存储至 Mysql 数据库,支持 json 数据导出

(6)系统可以将图片URL保存下来,便于后期做预览图功能

3.关键技术

基于Scrapy、Redis、elasticsearch和django打造的搜索引擎

4.软件说明书

首页如下图所示,在输入框中输入想要搜索的内容,点击搜索即可,下方热门搜索和我的搜索都可以直接点击进行搜索。搜索时,会出现搜索提示,可以直接点击给出的提示达到指定的页面。默认选择伯乐在线的文章,想搜索刺猬实习的内容,点击职位再输入关键词即可。

基于Scrapy、Redis、elasticsearch和django打造的搜索引擎

基于Scrapy、Redis、elasticsearch和django打造的搜索引擎

结果页面如下图所示,可以点击每一个的标题查看对应的内容。上方搜索框可以用于搜索其他的内容,左边展示的是爬取的数据数量,右边的热门搜索和我的搜索可以直接点击至对应搜索结果的页面。

基于Scrapy、Redis、elasticsearch和django打造的搜索引擎