🎃

Webアーカイブツールpywb

2022/10/05に公開

Werecorderpywbツールキットは、Pythonで記述されたWebアーカイブの統合ツールで、Webページのキャプチャ、リプレイ等の機能を提供している。

レコーディングはJavaScriptによるDOMの操作やレンダリングに対応しておこなわれるため、動的に表示されるページの多くは元のページと同様に表示が可能である。

インストールはpipでおこなう。

pip install pywb

コマンドラインツールでWebアーカイブの初期化をおこなう。"archive-folder"がWebアーカイブを置くフォルダで事前に作成しておく。"my-web-archive"はWebアーカイブのコレクション名である。

mkdir archive-folder
cd archive-folder
wb-manager init my-web-archive

既存のWARC形式のファイルを持っているなら、アーカイブに追加することができる。アーカイブのインデックスが自動的に更新される。

wb-manager add my-web-archive <path/to/my_warc.warc.gz>

Webアーカイブへのコンテンツの追加

Webアーカイブを作成する方法はいくつかあるが、pywbレコーダーを使う方法を紹介する。
まず、waybackをレコーディングモードで起動する。

wayback --record --live -a --auto-interval 10

デフォルトではポート8080で起動されているので、たとえば、http://example.com/ を保存するなら、ブラウザで、http://localhost:8080/my-web-archive/record/http://example.com/ にアクセスするだけである。ページが表示された時点で、再生表示に必要なコンテンツはすべてアーカイブされている。ページ内のリンクをクリックすることによって、アーカイブにそのページを保存することができるので、必要なページを次々にクリックすればよい。

この時点でフォルダーの内容は以下の通りである。

./static
./templates
./collections
./collections/my-web-archive
./collections/my-web-archive/archive
./collections/my-web-archive/archive/rec-20221005045408876609-mumujin.local.warc.gz
./collections/my-web-archive/static
./collections/my-web-archive/templates
./collections/my-web-archive/indexes
./collections/my-web-archive/indexes/autoindex.cdxj

WARCファイル(rec-20221005045408876609-mumujin.local.warc.gz)と、インデックス(autoindex.cdxj)が作成されている。レコーディング用のWARCファイルは1GB前後になると、新しいファイルが作成される。

Webアーカイブ上のページの再生表示(リプレイ)

上の例の場合、http://localhost:8080/my-web-archive/http://example.com/  にアクセスすることで、そのページが再生表示(リプレイ)される。

レコーディングをせずに、リプレイだけが必要な場合は、引数なしでwaybackコマンドを起動すればよい。

wayback

クローリングによるサイトの保存

Webrecorderはpuppeteerを使ってクローリングをおこなうDockerコンテナBrowsertrix Crawlerも提供している。高機能で利便性も高いツールであるが、筆者の場合、クローリングでエラー発生時のリカバリー制御方法がみつからなかったため、手動でクローリングをおこなった。

Discussion