HTMLを保存(魚拓)を簡単に出来るArchiveBoxの使い方

Chrome

日々変化するWebページを保存(魚拓)したいことって結構あると思います。自分もそうで、ちょくちょく変化するWebページを毎日保存して、変化を抽出しようと思い。

昔、PHPでスクレイピングした時にやったことはあるのですが、今回は気軽にPDFやpngなども保存したいなと。

最初はpuppeteerでやる方法(vanilla-clipper)かな、とやってみましたが自分の能力が低くて
ArchiveBoxが定期実行によさげな感じだったので、インストールから実行してみるところまでを書きます。ArchiveBoxもpythonからchrome呼んでるわけですが。

スポンサーリンク

1.必要な環境

公式ページのインストールページを見てみます。

pirate/ArchiveBox
🗃 The open source self-hosted web archive. Takes browser history/bookmarks/Pocket/Pinboard/etc., saves HTML, JS, PDFs, media, and more... - pirate/ArchiveBox

必要な環境は下記です。

  • python 3.5以上
  • wget 1.16以上
  • chromium かgoogle-chrome 59以上、今なら80以上なので問題なし
  • youtube-dl
  • curl
  • git

2. インストールする

自分が使っているさくらVPS kusanagi環境(centos7)でも、Dockerでも使えます。

2.1 Docker環境

Docker、Docker-compose環境でも使えます。すごく良い記事があるので貼り付け。
とりあえずarchiveboxだけ使ってみるなら、archivebox,nginxだけdocker-compose.ymlに記載すればOK。自分はWindows10 pro 64bitにDockerをhyper-Vで使っています。
Dockerお手軽。

ArchiveBox + Pocket + Fessで作る、いつでもどこでもマイ魚拓(全文検索付き) - Qiita
この記事は NTTコミュニケーションズ Advent Calendar 2019 の11日目の記事です。 昨日は @koki-sato さんの 作業手順書を docsify で作成する でした。 はじめに セキュリティ脅威を分析...

2.2 さくらVPS Kusanagi(Centos7)環境でArchiveBoxに必要な環境を整える

自分のプランは2Gプランですが、プラン関係なく使えると思います。
python3, youtube-dl, chromeが必要です。

2.2.1 python3を入れる

kusanagiのpythonは2.7なのでpython3.6を入れます。下記URL参考に。

KUSANAGI on ConoHaにPython3を入れる! - Qiita
以前、以下のようなエントリーを書きつつ、ConoHaにKUSANAGIを利用して、WordPressのサイトを構築 数年ぶり(多分、6, 7年くらいぶり)にブログサイトを構築しようと思い、KUSANAGI on ConoHa にチ...

# IUSレポジトリ追加
yum -y install https://centos7.iuscommunity.org/ius-release.rpm 

#python確認 python3, python3.4, 3.5, 3.6が出てきた
yum --enablerepo=ius search python3

#python3.6 インストール
yum --enablerepo=ius install -y python36u python36u-libs python36u-devel python36u-pip python36u-setuptools python36u-tools

# リンク追加
ln -s /bin/python3.6 python3
ln -s /bin/pyvenv-3.6 pyvenv

#確認
python3 -V

2.2.2 youtube-dlを入れる

archiveboxではyoutube-dlが必要なのでこれを入れる

youtube-dl: Download Page
sudo wget https://yt-dl.org/downloads/latest/youtube-dl -O /usr/local/bin/youtube-dl

sudo chmod a+rx /usr/local/bin/youtube-dl

2.2.3 chromeを入れる

chromeを入れます。レポジトリ追加してインストール。

sudo vim /etc/yum.repos.d/google-chrome.repo

[google-chrome]
baseurl=http://dl.google.com/linux/chrome/rpm/stable/$basearch
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

sudo yum install google-chrome-stable
sudo yum install ipa-gothic-fonts ipa-mincho-fonts ipa-pgothic-fonts ipa-pmincho-fonts


google-chrome --version

2.3 ArchiveBoxを入れる(gitから)

動く環境が整ったので、ArchiveBoxを入れます。 Quickstartにあるように、git cloneするだけです。事前にkusanagi provisionで –lampでもなんでもいいので作成しておきましょう。
nginx環境が良いです(archivebox dockerやdocumentもnginx前提)

pirate/ArchiveBox
🗃 The open source self-hosted web archive. Takes browser history/bookmarks/Pocket/Pinboard/etc., saves HTML, JS, PDFs, media, and more... - pirate/ArchiveBox
cd (your provision)
git clone https://github.com/pirate/ArchiveBox

2.4 ブラウザで見れるようにnginx.confを設定

魚拓(保存)したHTMLやpdf,pngをブラウザで見る場合はnginx.confを設定する必要があります。publishing your archiveページを参考にします。

pirate/ArchiveBox
🗃 The open source self-hosted web archive. Takes browser history/bookmarks/Pocket/Pinboard/etc., saves HTML, JS, PDFs, media, and more... - pirate/ArchiveBox
sudo vim /etc/nginx/conf.d/xxx_ssl.conf

location ~ ^/ArchiveBox/output {
  satisfy any;
  
  index index.html;
  autoindex on;
  try_files $uri $uri/ = 404;
}

sudo kusanagi nginx でnginxリスタートし、https://xxx.com/ArchiveBox/output/ で表示されると思います。404が出た時は、1つもアーカイブしていないか、パスが間違っている可能性があります。

archiveboxを使ってみた

3. テストでとりあえず皆がやるyahoo.co.jpを魚拓

ArchiveBox/で、魚拓したいurlをechoし、パイプでarchiveboxに渡すです。
下記でみんな大好きyahooトップページの魚拓が始まるはずです。


echo 'https://yahoo.co.jp' | ./archive

実際は、archivebox/archive.pyを実行しているようです。

出来ると、output/archive/日時 ディレクトリが出来、一覧ページからクリックすると、下記のようにアーカイブした種類に応じてデータを見ることが出来ます。

自分のサイトもアーカイブしてみます。10秒近くかかりました。

4. configで設定を変える

何も指定していないと、archive_orgにデータを送ったりと、無駄なことをしてくれます。
あと、user-agentなどの設定のせいか、いくつかのサイトでは期待通りのアーカイブが出来ません。(対策されている)

下記ページにconfigの説明があります。

pirate/ArchiveBox
🗃 The open source self-hosted web archive. Takes browser history/bookmarks/Pocket/Pinboard/etc., saves HTML, JS, PDFs, media, and more... - pirate/ArchiveBox

etc/ArchiveBox.conf.defaultがあるので、それをコピー.ArchiveBox.conf、このファイルを設定し、適用。 Creating a Config File参照

pirate/ArchiveBox
🗃 The open source self-hosted web archive. Takes browser history/bookmarks/Pocket/Pinboard/etc., saves HTML, JS, PDFs, media, and more... - pirate/ArchiveBox

とりあえずは下記を

  • SUBMIT_ARCHIVE_DOT_ORG=False
    Archive.orgに送るの止め
  • FETCH_MEDIA=False
    youtube-dlを使ってオーディオ、ビデオなど取得するのをやめてストレージ増えるのを防ぐ
  • USER_AGENTを普段使っているchromeのに変更しておく
    CURL,WGET,CHROMEがあります
  • CHROME_BINARY=google-chrome-stable

confを適用し環境変数に一気に追加

eval export $(grep -v '^#' ./ArchiveBox.conf)

UserAgentを変更すると、いくつかのサイトはOKになりました。
いくつかのサイトはajax等での遅延読み込み、スクロール読み込みにも対応する必要がありそうですね。

次回は魚拓リストを作成し毎日走らせるようなことを書きたいと思います。

コメント

タイトルとURLをコピーしました