ダウンロードツール Pavuk を使う

Linux Tool

ある要件 ( CMSで構築されたサイトを html で保存したい ) を実現するために、サイトをミラーリングするツールを探っていたところ Pavuk というツールを見つけました。
利用してみて、ある程度満足できる結果を得られたので備忘録として残しておきます。

はじめに

インターネットへの常時接続が当然な現在では、サイトのデータをローカルに保存するといったニーズは以前より少ないと思われますが、特定のサイトをローカルに保存したいという要件は今でも存在すると思います。

  • CMSやブログシステムを利用してサイトを構築したが、移行するにあたって、htmlファイル群としてバックアップしたい
  • 常時接続環境でないため、参考となる資料はローカルに保存したい。
  • 情報として貴重であるため取得/保存しておきたい。

等々。

Googleのキャッシュ機能や Internet Archive の wayback machine サービス等で対応可能な場合もあるでしょうが、必要なページが探せない場合も多いです。

こういった場合でも、任意のサイトをローカルに保存しておくことで、保存した時点のデータであればいつでもアクセスする事が可能となります。


Pavuk は任意のサイトをダウンロードするために利用できるツールで、Pavuk サイトでの機能説明によると、以下のような特徴があります。

  • HTMLドキュメント内のリンクに基づいて、再帰的なダウンロード
  • CSSとHTML 4.0をサポート
  • プロキシのサポート
  • HTTPサーバ、及び、プロキシの認証をサポート
  • 転送タイミングの設定
  • 複数のモード(通常の再帰、同期、ミラー、単一ページ、レジューム等)
  • CUI、及び、GUI(X Windows)での実行をサポート

css 中に含まれる画像ファイル等の取得が行える点等は、他ダウンロードツールと比べても有用だと思います。

wget よりもマイナーだが高機能。但し最近はメンテナンスはされていない様子という pavuk ですが、実際に使ってみた感じ、ダウンロードツールとして十分機能するものでした。
wget だと上手くできないと言った場合に、代替手段となりうるツールだと思います。

以下インストール手順や使い方を説明します。

環境

環境は以下になります。

OS CentOS 6.7
pavuk pavuk 0.9.35

インストール

インストール手順を以下に示します。

パッケージの取得

Pavuk - Download and Links ページからダウンロードできます。
記事執筆時点では、ページ中に Sourceforge project download site. からダウンロードできる旨記載されていますので、ここからダウンロードしましょう。

# wget http://sourceforge.net/projects/pavuk/files/latest/download?source=files -O pavuk-0.9.35.tar.gz

インストール

  1. 取得したパッケージを解凍します。
    # tar xvzf pavuk-0.9.35.tar.gz
    
  2. 解凍したディレクトリに移動し
    # cd pavuk-0.9.35
    

    解凍先にある INSTALL ドキュメントの内容を確認しておきましょう ( これに従ってインストール作業を行います )。
    0.9.35 での手順は以下になります。

  3. configure します。
    # ./configure
    

    configure のオプションは必要に応じて設定して下さい ( INSTALL 中に記述されている )。
    特に必要なければ指定無しでOKです。

  4. make します。
    # make
    
  5. make が問題なく終了したら make install します。
    # make install
    

上記でインストールは完了です ( /usr/local/pavuk にインストールされる )。

※GUIで実行したい場合、X11、及び、GTK のライブラリをインストールして置く必要があります。
きちんと確認していませんが、libX11, libX11-devel, gtk2, gtk2-devel が入れてあれば、GUI 対応でビルドされると思います。

※最初に Pavuk をインストールした環境では問題なかったのですが、別環境では build install が行われない問題に遭遇しました。
src ディレクトリ下に pavuk のバイナリは作成されていたので、これを実行したところ問題なく動作したので、この環境では、この方法で利用しました。

Pavuk の実行

先に書いたように、ビルド環境にもよりますが、CUI, GUIの両方で実行可能です。

CUI での実行

最もシンプルな実行形式は以下になります。

$ pavuk <取得先URL>

例)

$ pavuk http://www.example.com/

オプション

利用可能なオプションは pavuk --help を実行する事で表示されます。
これもビルド環境に左右されると思いますが、ヘルプメッセージの一部は日本語化されていました。
以下幾つかのオプションを示します。

オプション意味
-XGUI で起動
-lmax $nr可能なツリー ( 階層 ) の深さ
-dmax $nrダウンロード文書の最大数
-retry $nrエラー時のリトライ回数
-nocache/-cacheHTTP文書のキャッシュを許可しない(プロキシキャッシュ)
-noRobots/-Robots"robots.txt" を考慮しない
-noFTP/-FTPFTP ファイルをダウンロードしない
-noSSL/-SSLSSL ファイルをダウンロードしない
-noEncエンコードファイルの転送を許可しない
( gzip圧縮されないようにできるようだ )
-debugデバッグモード
-adomain許されるドメインのリスト
-mode $modeオペレーションモードの設定
-enable_jsjavascript ソースファイルのダウンロード
-index_name $str_._.htmの代わりに使うディレクトリインデックス名

上記は個人的に使いそうなオプションを羅列しました。これ以外にも認証関連やプロキシ関連の設定含めて多くのオプションが存在します。詳細は必要に応じて pavuk --help で確認してください。

オプションを指定した実行

オプションを指定して実行する場合、以下のようになります。

$ pavuk -index_name index.html -noEnc -noRobots -enable_js -preserve_time -adomain example.com,example2.com http://www.example.com/

上の例では、http://www.example.com/ からダウンロードを開始し、リンク構造に従ってデータをダウンロードします。

  • -adomain で許可するドメインを指定しているため、リンク先が指定ドメイン以外の場合ダウンロードは行われません。
  • ディレクトリインデックス名を index.html で指定。これを指定しない場合 _._.html になります。
  • -noEnc を指定。gzip圧縮対応サイトでダウンロードの問題があるコンテンツがある際に指定しています。
  • -noRobots を指定。robots.txt に従った場合、ダウンロードできないコンテンツがある際に指定しています。
  • -enable_js を指定。javascriptファイルをダウンロード。
  • -preserve_time を指定。文書の変更時間を保持。

認証が必要な場合

認証 ( 基本認証 ) が必要な場合以下のオプションを指定します。

$ pavuk -auth_name <ユーザ名> -auth_passwd <パスワード> ...

※認証方式を指定したい場合、 -auth_scheme を指定します。

プロキシを指定する場合

HTTPプロキシを指定する場合、以下オプションを指定します。

$ pavuk -http_proxy <URL>:<ポート> ...

※FTPプロキシや、SSLプロキシ等の指定も可能なようです。

GUI での実行

  1. GUIで実行する場合 -X オプションを指定します。

    ※X Windows 上で実行しましょう。

    $ pavuk -X
    
  2. Pavuk アプリケーションが起動するので、メニューから [File] > [Open URL...] をクリックします。
  3. Common config ウィンドウが開くので、ダウンロード元URLを追加します。
    [URL] タブの [ Request URL ] 欄にダウンロード元URLを入力し、[Append]ボタンをクリックします。
    Pavuk - Common config
  4. その他に設定するオプションがあれば、適宜設定を行います。
  5. 設定が完了したら [OK] ボタンをクリックします。
  6. ダウンロードを開始します。開始のためのボタン(4つの→が付いているボタン)をクリックするか、メニューの [Action] > [Restart] を実行します。
    Pavuk

まとめ

wget でも

$ wget -rkp -H -e robots=off --restrict-file-names=nocontrol -D example.com, example2.com  http://www.example.com/

といったオプション指定で、サイトデータを再帰的にダウンロードする事が可能ですが、Pavok の方がより細かいコントロールが可能です。
また、CSSファイルもサポートしている点で、ローカルにダウンロードしたHTMLを表示した際のオリジナルサイトの再現性が上になる場合が多いと思います。


サイトをhtmlで保存するといった要件がある場合に使ってみてはいかがでしょうか。