Webクローラを作ってみよう(前提編)

Webクローラを作ってみよう(前提編)

どうもこんばんにちは.うぃるです.
今回はwgetを使用してWebページ取得するWebクローラを作ってみたいと思います.
使用する物は本ブログで導入したUbuntu15.10を使用して作ります.
また,今回はWebクローラを解説したいと思います.
次回記事:Webクローラを作ってみよう(本編?)

目次

Webクローラとは

いまいち情報が載っていないけどとりあえずwikiさんから引用してみましょう.

クローラ(Crawler)とは、ウェブ上の文書や画像などを周期的に取得し、自動的にデータベース化するプログラムである。「ボット(Bot)」、「スパイダー」、「ロボット」などとも呼ばれる。
主に検索エンジンのデータベース、インデックス作成に用いられているほか、統計調査などの目的にも利用される。近年では電子メールアドレス収集業者などもクローラを利用して、スパムの送信効率を上げている。
一般にクローラは、既知のHTML文書の新しいコピーを要求し、文書中に含まれるリンクをたどり別の文書を収集するという動作を繰り返す。新しい文書を見つけた場合はデータベースに登録する。また、既知のファイルが存在しないことを検出した場合はデータベースから削除する。
wikiより引用

webクローラは主に検索エンジンとして利用されています.
検索エンジンとしてのクローラはGooglebotやbingbot,Yetibot等がありますが,今回はダウンローダーとしてのクローラとしてWgetを使用します.

Wgetとは

enter image description here

GNU Wget(あるいは単に Wget)はウェブサーバからコンテンツを取得するコンピュータープログラムであり、GNUプロジェクトの一部である。その名称はWorld Wide Webと(プログラムの主要な機能である)getから派生したものである。現在Wgetはウェブ閲覧のために用いられるTCP/IPに基づいたもっともポピュラーなプロトコルである、HTTP、HTTPS及びFTP によるダウンロードが利用可能である。
wikiより引用

GNUさんが出しているダウンローダですね.Linuxを使っている方なら時々使用すると思いますが,色々使い勝手が良いですね.また,WgetはGPLライセンスv3となっているので,改変および再配布に関して自由に誰でも使用することができるので,お手軽にクローラを作る事ができるのです.

Wgetを使ってみる

一応UbuntuにはWgetが入っていると思うのですが,一応確認しておきましょう.
Ubuntuを起動してターミナルを起動しておきます.

wget -V
と打ち込んで見ましょう.(-Vのブイは大文字です.)
そうするとWgetのバージョンの情報その他諸々が表示されるので確認しておきましょう.

enter image description here

当方の環境だとv1.16.1が入っていますが,最新バージョンは1.16.2っぽいです.(2016/02/01現在)
このバージョンでも差し支え無いと思われるので今回はバージョンアップはせずにこのまま使いたいと思います.

とりあえずターミナルから現在の居場所からDocumentへ移動したいと思います.
いつもおなじみのlsコマンドとcdコマンドを使用して現在のディレクトリ階層を移動してみたいと思います.

enter image description here

ターミナル上で以下のコマンドを打ってみます.
ls
これで現在のディレクトリにある物を表示できます.
ここはホームディレクトリと言って,Linuxでは基本的な立ち位置となるので覚えておきましょう.
ここから次のコマンドを打って移動します.
cd Documents
cdはChange Directoryの略でディレクトリを移動(変更)するときに使用します.
先ほどのコマンドでドキュメントに移動できました.

画像には他のコマンドも写っていますが気にしないでください.

では早速wgetを使ってみたいと思います.

Wgetの基本的な構文としては以下のようになります.
wget [-オプション(任意)] [URL]

とりあえず,オプションは気にせず何かをダウンロードしてみましょう.

今回はgoogle先生のページをクローリングしてみましょう.
コマンドは以下の用になります.
wget http://google.com

enter image description here

色々と文字が出てきてなんかすごいことしている感じたっぷりですが,やっていることはブラウザでgoogle先生のページに飛んでいる事と大差ありません.
さて,本当にダウンロードできたかlsを打って確認してみましょう.

enter image description here

なにやらindex.htmlなるファイルができています.これをファイラからブラウザで確認してみましょう.

enter image description here

ファイラを選択して.ドキュメントに移動して,その中のindex.htmlをダブルクリックするとfirefoxが開くので確認したら....

enter image description here

多分文字コードが合っていないせいで色々文字化けしていますが,とりあえずwgetコマンドでダウンロードできました.

マナーを守ろう

まだ段階的にはクローラといえるクローラを作っていないので何とも言えませんが,ちょっとだけ余談です.
このwebクローラは非常に便利な物です.しかし,便利が故に使い方を気をつけなければいけません.

過去に岡崎市中央図書館事件がありました.
ざっくりと内容を言ってしまうと,クローラのアクセスによって図書館のサーバがダウンするという事態になったあれですね.ここで詳しくは言及すると本来の趣旨から外れてしまうので詳しく知りたい方はこちらをご覧ください.
リンク:Librahack : 容疑者から見た岡崎図書館事件

クローラはその性質上,webサーバにアクセスを行います.一つ設定を間違えると大量のアクセスを行ってしまい,場合によってはサーバに負荷をかけてしまいます.そのため,相手側のサーバに迷惑をかけないためにアクセスが集中する時間帯を避けてクローリングする事や,アクセスする間隔を調整する等の措置を取る必要があります.

今回は単発のクローリングでしたが,これを複数のサイトでたくさんクローリングしてしまうと色々と問題があると思われるので,できる限り迷惑がかからない方法でクローリングをしていきましょう.(と,言ってもこれが本職では無いので間違え等があったりしますが...)

最後に

今回はWgetを用いてクローラを作る導入部分を解説しました.
次回はWgetを用いてクローリングする方法を解説できたらしたいと思います.

それではお付き合いありがとうございました.

0 件のコメント :

コメントを投稿