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


接続確認
http://192.168.33.11:5601/

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


これで一通り準備完了