hakeの日記

Windows環境でプログラミングの勉強をしています。

WgetでHPまるごとゲット

SL-C3000でネットサーフィン(すでに死語?)をしていると興味があって保存しておきたいページ、あるいは時間があるときにオフラインでゆっくりと読みたい小説サイトなどに出くわすときがある。このような場合にはそのページを保存して置くのだけれども標準のNetFrontのページメモ機能では対象ページ1ページだけを保存する機能のため、複数ページにわたってリンクで接続しているHPには対応できない。

そこでザウルスにもともと入っているwgetというコマンドを使って対象HPをまるごと入手してみる。ただし取り込みを行う度にターミナルからコマンドをたたくのは大変なので、直ぐに実行できる方法にする。また、後で参照が楽になるように取り込むHPファイルの置き場所は本体ディスクの下のWeb_Files/Pagememo_Filesにする。
まずシェルスクリプト /home/zaurus/Documents/Web_Files/Pagememo_Files/get.shを作成。スクリプトは他の場所に置いても良いがその場合はchmod a+xを留意しておく。

#!/bin/sh

URL=`qcf -w`

cd /home/zaurus/Documents/Web_Files/Pagememo_Files
wget -k -q -nc -np -L -r -l=5 -R .jpg,.bmp,.png $URL

IMkit-Anthyの単語登録のときと同様にyaktyさんのqcfを使用してURLをクリップボード経由で取得する。wgetのオプションは下記の通り、ただしこれは状況や好みに応じて変更しても良い。

  • -k 絶対リンクで書かれているものを ローカルで相対リンクにコンバート
  • -q メッセージを表示させない
  • -nc 既に存在するファイルをダウンロードしない
  • -np 親ディレクトリを再帰回収しない
  • -L 相対リンクだけを受け付けるようにする
  • -r 再帰的に回収を行う
  • -l=5 再帰回収の最大の深さを5に指定する
  • -R .jpg,.bmp,.png 画像ファイルを回収しない

wgetのオプションは、wget --helpの出力と下記の解説ページを参考にした。ここではhtmlファイルのみを取得するようにしたが画像のみ、音楽ファイルのみ取り込みということも可能のようだ。


次にKeyHelperのMenuランチャーにこのシェルスクリプトを登録する。日本語はUTF8で書くこと。

[Menu]
01_HP取得 = @exec(TAB)/home/zaurus/Documents/Web_Files/Pagememo_Files/get.sh

NetFrontあるいはOperaで取り込みしたいHPを表示させ、そのURLを「Fn+C」でクリップボードにコピーする。Operaの場合GoToMenuを開くと既に現URLが選択された状態になっているのでコピーに便利。次にKeyHelperのランチャーメニューからHP取得を選択すると、タスクバーにget.shと一時表示されて取り込みが開始され、終了するとタスクバーに0:exitの表示が一瞬あらわれる。


取り込まれたhtmlファイルは、本体ディスクの下のWeb_Files/Pagememo_Files以下にURLの構造のフォルダが作成されて、そこに保存される。例として対象をhttp://www.aaa.ne.jp/bbb/index.htmlとした場合は、www.aaa.ne.jpフォルダの下のbbbフォルダの下に各htmlファイルが置かれる。ここはザウルスのホーム画面の「ファイル」タブで表示が可能なので、ここからファイルを直接選択してブラウザを起動させることもできる。


参考HP:
Wgetを使おう的ページ
http://www.geocities.jp/horiuchimasaru/wget.html


LinuZau ToolBox - qcf -
http://tbox.jpn.org/wiki/linuzau/wiki.cgi?qcf