Linuxゲリラ戦記

ラブロマンスは止まらない。wgetも止まらない。

アイキャッチ

63.wgetの真の力、見せてくれるわ!!

ナックス「というわけで、今回は検索ロボットを作ります」

デビー君「はい」

ナックス「出来ました」

デビー君「!?」

ナックス「実は、Linuxには最初から検索ロボットなコマンドがいます。その名もwgetコマンド!!」

デビー君「wgetコマンド?確か16.Linuxのエロ欲望はWindowsのゲーム欲望を凌駕するで初めて出たコマンドで、インターネットにある画像とかダウンロードできるんだよね。前回作った画像収集スクリプトでも大活躍したコマンド」

ナックス「そうです。wgetコマンドをなめてかかってはいけません。検索ロボットと言えば、リンクをたどって次から次へとページ情報を収集するロボット。今回はwgetコマンド君にリンクをたどって次から次へとwebページをダウンロードしてもらいましょう」

ナックス「検索ロボットは、最初の大元のウェブページさえ指定すれば、あとはその大元のウェブページからリンクをたどって情報を収集します。今回は始まりのページをオンラインブックマークサービスで有名な『はてな』というサイトhttp://www.hatena.ne.jpを指定してみることにします」

ナックス「とりあえず、ホームディレクトリにでも、ダウンロードした情報を置くためのディレクトリを作成しましょう」

$ mkdir ~/testrobot

ナックス「そのディレクトリに移動します」

$ cd ~/testrobot

ナックス「では、いよいよ検索ロボットを発動させます。今回はクローリングの深さ(いくつのリンクを辿るか)を3とします」

$ wget -l 3 -H -r http://www.hatena.ne.jp

ナックス「-l 3 の l はエルの小文字です。数字のイチではないので気をつけて!」

ナックス「実行すると、wgetが引くほどウェブサイトのダウンロードを始めます。私も、しばらくダウンロードが終わるのを待って見ましたが、なんかもう永遠に終わらないくらいにダウンロードしやがるので、Ctrlキーを押しながらCキーを押して強制終了しました」

ナックス「というわけで、wgetコマンドのオプションの解説だ!!」

デビー君「はーい」

ナックス「まず、-rオプション。このオプションをつけるだけで、リンクをたどって次々とダウンロードしてくれます。なにそれ素敵!」

ナックス「-l 3 はクローリングの深さ、つまり、リンクをどの深さまで辿るかを指定します」

デビー君「え?リンクを3回だけ辿るの?3回だけ辿るだけなのに、あんなに大量のファイルをダウンロードするの?」

ナックス「わかりやすく説明しましょう。今回は『はてな』のサイトからリンクをたどりました。まず、この『はてな』http://www.hatena.ne.jpに、リンクが50個あったとしましょう、wget検索ロボット君は、まずhttp://www.hatena.ne.jpのサイトをダウンロードした後、その50リンクのすべてのページをダウンロードしようとします。これが、深さ1」

デビー君「深さ1で、まず51ページダウンロードしようとするね」

ナックス「次に。その50ページ全てに、50のリンクがあるとします。wget検索ロボット君は、50ページすべての50リンクをダウンロードしようとします。つまり2500ページダウンロードしようとします。この時点で深さ2」

デビー君「深さ2の時点で51 + 2500で2551ページをダウンロードしようとするんだね」

ナックス「さらに2500ページ全てにリンクが50あったとすると、2500ページすべての50リンクをダウンロードしようとするので1万2500ページを更にダウンロードしようとします。これで、深さ3、つまり、-l 3で指定した数に達しました」

デビー君「じゃあ、深さ3で51 + 2500 + 1万2500で全部で1万5051ページダウンロードしようとするの!?ひえー!!」

ナックス「ちなみに、-rオプションを指定して、-l オプションを指定しなかった場合はデフォルトで深さ5のクローリングを行います」

ナックス「最後が-Hオプション。このオプションを指定しない場合は、http://www.hatena.ne.jpというアドレス配下のウェブページだけダウンロードしようとしますが、-Hを指定することで、http://www.hatena.ne.jpというアドレス以外のページ、すなわちリンクでつながっているサイトを全てダウンロードします」

デビー君「へー」

ナックス「で、今回は-l 3と指定することで、3の深さまでのクローリングを行いましたが、-l infと指定することで、ダウンロードできる極限までダウンロードします。リンクが続く限り、どこまでもどこまでも……」

ナックス「すなわち」

$ wget -l inf -H -r http://www.hatena.ne.jp

ナックス「と指定するだけで、インターネット上の全ての情報をダウンロードしようとします」

デビー君「なにそれ怖い」

ナックス「ちなみにこのコマンドは実行しないでね」

デビー君「え?実行しちゃったけど?」

ナックス「実行しちゃったら、Ctrlキーを押しながらCキーを押して強制終了してください」

デビー君「なんで実行しちゃダメなの?」

ナックス「マジで全世界のインターネットの情報をダウンロードしようとしますので、あなたのパソコンの記憶容量を超えてダウンロードしようとします。すなわち、ハードウェアエラーが起こったりして最悪パソコンが壊れます」

デビー君「なにそれ怖い」

ナックス「さて、前回、インターネットから直に欲しい情報だけダウンロードは難しいと言いましたが、なんとなく頑張れば出来る気がしてきたので、次回から頑張って作ってみます」

デビー君「まじですか」

ナックス「次回!!まずはwgetで取得した情報からimgタグ情報を取り出す(64.wgetを使った画像収集プログラムを作ろう)!!」

このエントリーをはてなブックマークに追加