見出し画像

【供養シリーズ】過去の教えて!gooへの投稿全てをカテゴリ別をオフライン保存するスクリプトを公開(有料)

こちらはクラウドワークスで募集されていた内容を作成し契約を試みたが、
契約には至らなかったので、そのプログラムを有料で公開するという試みです。

ウーバー配達員より

冒頭:背景とモチベーション

  • 「教えて!goo」が2025年9月で終了するニュース

  • 数学カテゴリを全部保存したい需要

  • 募集されてたので勝手に作り、応募したが買ってもらえなかった

  • せっかくなので供養として公開(ただし note 有料部分に)

できること

  • 教えて!goo 数学カテゴリのQ&Aページを自動ダウンロード、数学指定のみではない全カテゴリにも対応

  • 保存形式は プレーンHTML(リンク書き換え済み)

  • 必要なCSSや画像もローカル assets/ ディレクトリにまとめるので オフライン閲覧可能

  • 日付ごとにディレクトリが分かれるので、整理されてアーカイブになる

  • 大量のURLを 並列ダウンロードして高速処理

保存されるフォルダ構成

site/
└─ 数学/
   ├─ 2015/01/01/8876310.html
   ├─ 2015/01/01/8876340.html
   └─ 2025/09/12/14126484.html
out/
├─ index.tsv   (処理ログ)
└─ logs/       (失敗リストや parallel の joblog)
assets/        (CSS, JS, 画像)

実行に必要なもの

  • 環境:macOS または Linux

  • 必須コマンド:bash, curl, grep, sed, awk, gzip, GNU parallel

実行方法

1. URLリストを作成

保存したいQ&AのID範囲を urls.txt に書く。

https://oshiete.goo.ne.jp/qa/8876310.html
https://oshiete.goo.ne.jp/qa/14126484.html

もしくは、

$ ./gen_url_list.txt

にて作成。START_IDを小さくすればするほど昔のものが対象になる。最小は当然1。

2. 単発テスト

./worker_math_only_local.sh https://oshiete.goo.ne.jp/qa/14126484.html

→ site/数学/2025/09/12/14126484.html が保存される。

3. 並列で一括保存

JOBS=12 ./fetch_math_only_local.sh urls.txt
  • JOBS は並列数(CPUコア数に応じて8〜32推奨)

注意点

  • サイトに高負荷をかけすぎないように、JOBS は常識的な値にしてください。

  • 一部の古いページは既に404/410で取得不可能です。

  • 公開終了後に閲覧できるのは ダウンロード済みHTML保存したアセットのみです。

終了するサービスの記録を残したい人はどうぞ、
まだギリギリ間に合うかも?興味ある人は自己責任で利用してください。

ダウンロード

ここから先は

24字 / 1ファイル

¥ 1,000

この記事が気に入ったらチップで応援してみませんか?

購入者のコメント

コメントするには、 ログイン または 会員登録 をお願いします。
【供養シリーズ】過去の教えて!gooへの投稿全てをカテゴリ別をオフライン保存するスクリプトを公開(有料)|shokuan
word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word word

mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1
mmMwWLliI0fiflO&1