首先说明一下,本人是小白,纯属看网上的各种资料,自己瞎掰黑的做个简单的搜索引擎。并且,从开始做到做完经过了挺长时间的,所以前面的很多细节都忘记了,希望大家见谅。
1、选题目标
对于这次搜索的东西,确定为旅游景点,于是在网上搜索了一个比较全的景点网站:http://www.cssn.com.cn/www/china/ ,爬取这个网站的华北、东北、华东、中南、西南、西北和港澳台这七个地区的景点(爬取的都是文字,并没有图片)。
2、总体设计
分为三部分:
2.1数据采集
此次数据采集用的是elasticsearch + scrapy-redis + redis数据库 进行的分布式爬取数据,elasticsearch可以抽象为一个对搜索引擎很方便的数据库,redis-scrapy 是一个框架,用来爬取数据很方便,自带去重功能,自然而然的就必须得用到redis数据库。接下来就是部署了,我在一个服务器上面部署了redis数据库,在另一个服务器上面部署了elasticsearch,你也可以都部署在一台服务器上面,这里可以认为我闲的蛋疼部署在两台服务器上面,两台服务器都是centos 7 ,然后在windows 10上面用的是pycharm ,然后安装了redis-scrapy。最后写了爬虫代码,爬取数据。存储在elasticsearch上面。
2.2重建索引
先利用redis-scrapy自带的scrapyelasticsearch.scrapyelasticsearch.ElasticSearchPipeline管道按照默认的_mapping上传到服务器上的elasticsearch建立默认索引,然后利用远程连接工具连接elasticsearch重建索引。
2.3查询界面设计
利用python的第三包原生elasticsearch包将pycharm和服务器连接,然后用django输入查询内容,经过elasticsearch查询之后把结果传回到django上,最后通过网页显现出来。
3、详细过程
3.1数据采集
3.1.1 服务器上面安装elasticsearch
安装这个必须是非root用户,用一个非root用户登陆上服务器,要先安装elasticsearch,就必须先安装java环境,先在windows下面进入 https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 这个网站,下载相对应的tar.gz版本就可以了,下载完把这个包用远程连接工具上传到服务器上面,这个用的远程工具是MobaXterm(如果没有这个工具的小伙伴可以在这个网址下载: https://mobaxterm.mobatek.net/download.html ,下载个免费的就可以了)成功上传上去之后,用tar -zxvf 这个命令解压这个包就可以了,然后vi /etc/profile,在文件最后追加
##JAVA
export JAVA_HOME=/usr/local/jdk1.8.0_181
export PATH=$PATH:$JAVA_HOME/bin
这个就可以了。退出vi编辑器,source /etc/profile使环境变量设置立即生效。现在java环境就配好了。接下来在服务器上面输入 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.2.tar.gz 这一行,下载elasticsearch包 ,同样解压完后,修改配置文件,路径是elasticsearch-6.4.2/config/elasticsearch.yml这个我文件,打开后修改 ①cluster.name: “这里写你想要的集群名字” ②network.bind_host: 0.0.0.0 (修改这个之后,你可以在windows访问elaseticsearch)③http.port: 9204 ,以上修改的内容①和③是可以不修改的,②是必须修改的。然后到达elasticsearch-6.4.2/这个目录下面,输入tmux,再输入./bin/elasticsearch,再按ctrl+b+",会出现双屏,按ctrl+b+↓会切换到下面屏幕,并在下面屏幕输入tmux a ,tmux 可以让elasticsearch在后台一直运行,tmux a这个命令就是启动这个功能的,到现在为止,elasticsearch安装、配置以及启动已经完成了。