Wayback Machineのデータを取得し、ローカルで閲覧できるように整理する方法

日記
日記

ゲームサイトの過去データを保存し、オフラインで閲覧できるようにしたい場合、Wayback Machine からデータを取得して整理する方法を紹介します。


1. Wayback Machine とは?

Wayback Machine は、インターネット上のウェブページを定期的にアーカイブするサービスです。これを利用することで、過去のウェブサイトを閲覧し、保存することができます。

Wayback Machine

2. 取得するサイト

今回、取得するのは「信長の野望 Online」の公式サイトの一部:

https://www.gamecity.ne.jp/nol/world/

過去に保存されたデータをすべてダウンロードし、日付ごとにフォルダに整理して保存します。


3. 必要なツール

取得に使用するツールは以下の通り:

  • wget(ウェブページをダウンロードするコマンド)
  • jq(JSON データを扱うツール)

Linux では以下のコマンドでインストールできます:

sudo apt install wget jq  # Ubuntu / Debian
sudo yum install wget jq # CentOS / RHEL
brew install wget jq # macOS (Homebrew)

4. Wayback Machine からデータを取得する方法

(1) Wayback Machine API からスナップショット一覧を取得

まず、Wayback Machine に保存されている https://www.gamecity.ne.jp/nol/world/ 以下のスナップショットを取得します。

curl "http://web.archive.org/cdx/search/cdx?url=www.gamecity.ne.jp/nol/world/*&output=json" > snapshots.json

これで、過去のスナップショットのリストが snapshots.json に保存されます。

(2) wget でスナップショットごとにデータを取得

以下のスクリプトを実行すると、スナップショットの日付ごとにフォルダを作成し、リンクをたどりながらデータをダウンロードできます。

📌 download_nol.sh(スクリプト)

sh
#!/bin/bash

# URLのベース
BASE_URL="https://www.gamecity.ne.jp/nol/world/"

# 保存ディレクトリのベース
SAVE_ROOT="snapshots"

# Wayback Machine のスナップショットを取得
ARCHIVES=$(curl -s "http://web.archive.org/cdx/search/cdx?url=${BASE_URL}*&output=json" | jq -r '.[1:] | map([.[1], .[2]]) | .[] | @csv')

# 各スナップショットをダウンロード
while IFS=, read -r TIMESTAMP URL; do
  TIMESTAMP=$(echo $TIMESTAMP | tr -d '"')  # 余計なダブルクォートを削除
  URL=$(echo $URL | tr -d '"')

  # 保存先ディレクトリ(例: snapshots/20240101/)
  SAVE_DIR="${SAVE_ROOT}/${TIMESTAMP}/"

  # すでにフォルダが存在している場合はスキップ
  if [ -d "$SAVE_DIR" ]; then
    echo "Skipping already downloaded snapshot: $SAVE_DIR"
    continue
  fi

  # フォルダを作成
  mkdir -p "$SAVE_DIR"

  # Wayback Machine のスナップショット URL
  SNAPSHOT_URL="https://web.archive.org/web/${TIMESTAMP}/${URL}"
  echo "Downloading: $SNAPSHOT_URL → $SAVE_DIR"

  # `wget` を使ってリンク先も再帰的にダウンロード
  wget -r -np -N -k -p -l 5 --convert-links --restrict-file-names=windows --no-parent --domains=web.archive.org --no-host-directories -P "$SAVE_DIR" "$SNAPSHOT_URL"

done <<< "$ARCHIVES"

📌 スクリプトの使い方

  1. スクリプトを作成
    nano download_nol.sh そして、上記のコードを貼り付けて保存。
  2. 実行権限を付与
    chmod +x download_nol.sh
  3. スクリプトを実行
    ./download_nol.sh

5. ダウンロードした .html のリンクを相対パスに変換

取得した .html ファイル内の絶対リンクを 相対パスに変換 するスクリプトを実行します。

📌 convert_links_to_relative.sh

sh
#!/bin/bash

# 保存先のルートディレクトリ
SAVE_ROOT="snapshots"

# すべての .html ファイルを処理
find "$SAVE_ROOT" -type f -name "*.html" | while read -r FILE; do
  echo "Processing: $FILE"

  # 絶対パスを相対パスに変換
  sed -i -E 's|https?://www\.gamecity\.ne\.jp/nol/world/|../|g' "$FILE"

  # Wayback Machine のURLも削除(不要なプレフィックスを取り除く)
  sed -i -E 's|https?://web\.archive\.org/web/[0-9]+/||g' "$FILE"

done

echo "All HTML files have been processed and converted to relative paths."

📌 実行手順

  1. スクリプトを作成
    nano convert_links_to_relative.sh そして、上記のコードを貼り付けて保存。
  2. 実行権限を付与
    chmod +x convert_links_to_relative.sh
  3. スクリプトを実行
    ./convert_links_to_relative.sh

6. まとめ

📝 実行手順

  1. wgetjq をインストール
  2. Wayback Machine のスナップショット一覧を取得
    curl "http://web.archive.org/cdx/search/cdx?url=www.gamecity.ne.jp/nol/world/*&output=json" > snapshots.json
  3. スクリプト download_nol.sh を実行し、データを取得
    ./download_nol.sh
  4. リンクを相対パスに変更
    ./convert_links_to_relative.sh

📂 実行後のフォルダ構成例

snapshots/
├── 20240101/ # 2024年1月1日のスナップショット
│ ├── index.html
│ ├── page1.html
│ ├── images/
│ └── styles/
├── 20230115/ # 2023年1月15日のスナップショット
│ ├── index.html
│ ├── ...
└── ...

🎯 これで、Wayback Machine に保存されている https://www.gamecity.ne.jp/nol/world/ 以下のすべてのデータを日付ごとに整理し、リンクを相対パスに変換してローカルでオフライン閲覧できるようになります! 🚀

メール通知
Notify of
guest
0 Comments
Inline Feedbacks
View all comments