Image

WgetでWebサイトをクローリングしてみる!WgetコマンドでWebサイトの情報を取得するまで!!

Wgetで任意のWebサイトをクローリングするための手順を解説をします。Wgetをコマンドで操作してWebサイトの情報をダウンロードします。Wgetならコマンド操作だけなので簡単です。

WebサイトをWgetを使ってクローリングしてみよう

今回は実際にWgetでクローリングしていきます

クローリングについてやWgetコマンドを使うための事前準備については前回の記事、Wgetのコマンドでクローリングを見てください。

目次   

01. Webサイトをクローリング

02. 実際にWgetでクローリングしてみる

03. treeコマンドでディレクトリ構造の確認

04. まとめ


01. Webサイトをクローリング


早速macOSWgetを使ってみます

homebrewをインストールし、Wgetもインストールされている状態であることを確認してください

今回は、私たちのポートフォリオサイト(https://portfolio-of-us.herokuapp.com)をWgetコマンドを利用してクローリングしていきます。

ただ一つのページをクローリングするだけであれば以下のWgetコマンドで行うことができます



$ wget https://portfolio-of-us.herokuapp.com


しかし、リンクをたどってクローリングするのであればこのコードでは不十分です。

再帰的にダウンロードを行う-rオプションを使用します

-rオプションは次々にファイルをダウンロードしてサーバーやネットワークに負荷がかかるので使用には注意が必要です

Wgetでクローリングを行うにも、他のツールを利用するにも相手のサイトやサーバーに負荷をかけてはいけません

これはルールなのでしっかりと理解して守りましょう


-l(Lの小文字)オプションでリンクをたどる深さを制限したり、-wオプションでダウンロード間隔を空けたりしてなるべく負荷が少なくなるようにします。

実際のコードは以下のものです。

*下のコードでは自分たちで作成したサイトであることに加え、それほどリンクをたどる深さは深くないことがわかっていたので、-lオプションは省略しました。



$ wget -r --no-parent -w 1 --restrict-file-names=nocontrol https://portfolio-of-us.herokuapp.com/


--no-parentは、親ディレクトリをダウンロードしないというオプションです。

--restrict-file-names=nocontrolは、URLに日本語が含まれる場合にそのままのファイル名で保存するというオプションです。

ここで注意すべき点は、URLの末尾に/がついていなければならないということです。

末尾に/がついていないと、実行した際に「/portfolio-of-us.herokuapp.com/」以下のファイルがダウンロードされる際に「portfolio-of-us.herokuapp.com」という名前のディレクトリが作られて、「/portfolio-of-us.herokuapp.com」に対応するファイルが失われてしまうのです。

以上のことに注意しつつ先程のコードを実行すると、以下のようになります




ファイルをダウンロードするたびにズラーっと文字が出てきますが正常に動いている証拠なので安心してください。

ダウンロードが終了すると、「ダウンロード完了」と表示されます。




これでWgetによるクローリングは完了です。


02. 実際にWgetでクローリングしてみる


treeコマンドを使って、ダウンロードしたサイトのディレクトリ構造を見てみましょう

treeコマンドは、macOSでは「brew install tree」、Ubuntuでは「sudo apt install -y tree」でインストールできます。

実行のコードは簡単です。以下のコードでできます。



$ tree portfolio-of-us.herokuapp.com/


実行結果は以下のようになります。(長すぎたので下部は省略しました)




04. まとめ


お疲れ様でした。

ここまで読んでいただきありがとうございました。

今回はWgetでWebサイトをクローリングをしてみることができたと思います。

クローリングのイメージを掴んでプログラムコードでもクローリングを実装できるようにしましょう。