Scrapyでサイトをクロールし、ElasticSearchでサイトの概要を把握する (1)
サイトリニューアルなどで、既存のサイト状況を把握するためのツールとして
サイトをScrapyでクロールし、その統計情報などをElasticSearchにインデックスしてkibanaで解析することを思いついたので、やってみた。
CentOS6へセットアップします
ElasticSearch のインストール
今回は最新の5.x系を利用した。
# rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch # vi /etc/yum.repos.d/elasticsearch.repo [elasticsearch-5.x] name=Elasticsearch repository for 5.x packages baseurl=https://artifacts.elastic.co/packages/5.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md # yum search java | grep 1.8.0-openjdk # yum install java-1.8.0-openjdk # alternatives --config java # service elasticsearch start
動作確認
こんなのがかえってきたらOK
$ curl -XGET 'localhost:9200/?pretty' { "name" : "UPusCPa", "cluster_name" : "elasticsearch", "cluster_uuid" : "YRaDwsW4SIG0SraDDKMPTQ", "version" : { "number" : "5.2.1", "build_hash" : "db0d481", "build_date" : "2017-02-09T22:05:32.386Z", "build_snapshot" : false, "lucene_version" : "6.4.1" }, "tagline" : "You Know, for Search" }
日本語解析用プラグインインストール
コマンド一発でインストールしてくれて便利。
$ cd /usr/share/elasticsearch #kuromoji 日本語形態素解析エンジン $ sudo bin/elasticsearch-plugin install analysis-kuromoji # 大文字小文字全角半角の正規化ができるプラグイン $ sudo bin/elasticsearch-plugin install analysis-icu #プラグインを有効化 $ sudo service elasticsearch restart #設定ファイルの場所はここ /etc/elasticsearch/elasticsearch.yml
クロールした情報を可視化するためにKibanaをインストール
# vi /etc/yum.repos.d/kibana.repo [kibana-5.x] name=Kibana repository for 5.x packages baseurl=https://artifacts.elastic.co/packages/5.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md $ sudo yum install kibana $ sudo vi /etc/kibana/kibana.yml server.host: "192.168.33.11" ~ elasticsearch.url: "http://localhost:9200" $ sudo service kibana start
python2.7のインストール
$ sudo yum install centos-release-scl-rh $ sudo yum install python27 #有効化 $ scl enable python27 bash #恒久的有効化 source /opt/rh/python27/enableを.bashrcに書いておく
Scrapy+ES接続用モジュールをインストール
# pip install --upgrade pip //pip 7から9にアップグレードしないとエラーが出た # pip install lxml # pip install cryptography # pip install ScrapyElasticSearch
これで一通り準備完了