掲示板・ブログの引っ越し方法(データ移行をPythonで行う)

老舗BBSサービス「teacup」が2022年8月1日にサービスを終了した。

1997年のサービス開始から実に25年だ。

これで黒字確保できていた理由は3名の担当者という少数で運営しているためらしい。

 

サービスが終了したら、通常は次の引越し先を考える。

ただし最近は無料掲示板は減り続け、FC2程度しか思いつかない。

レンタルサーバー上にCGIで掲示板を用意する……という手段もあるけれど、そもそも無料掲示板を使っている訳なので、技術も知識も予算も無いのが現状だ。

掲示板だけでなく、ブログやサイト移動の場合でも次のような手順を踏む。

勿論、過去のデータを移行しない場合は何もしなくても良い。

 

ただし、上記手順が使えない場合は多々ある。

  • そもそもエクスポート機能が存在しない
  • 掲示板の管理人パスワードを忘れてしまった
  • エクスポートしたファイル形式が新規掲示板のエクスポート形式と異なる

この場合は、ひと手間加える必要がある。

今回、私自身が管理人でない掲示板の移行をしてみたので、参考になればと思い記事にしておく。

実際には「teacup掲示板」から「FC2掲示板」へデータ移動を行った。

なお、FC2掲示板はアカウント作成して既に新規作成されている前提。

①② Pythonによるデータ抽出と形式変換

手動でやるなら一記事毎にコピーしてテキストに貼り付ける。

今回の記事数は5,000件以上あったので、スクレイピングの技術を使った。

 

PythonでSeleniumを使ってChromeを操作する。

そして該当箇所を抽出した後、移行先の掲示板のエクスポート形式に変換する。

 

FC2掲示板の投稿記事をエクスポートすると次のような形式だった。

POSTED BY: 投稿者名
SUBJECT: タイトル
EMAIL:
SITE: http://
DATE: 2022-07-23 09:38:07
USER AGENT: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36
IP: 211.XXX.XXX.XXX
ICON: 0
COLOR: 1
AUTHORIZED: 1

こんちにわ。
初投稿です。
———-

 

掲示板形式に関する情報はFC2オフィシャルサイトには存在しなかった。

が、ブログ形式は存在したので、何となく形式は理解できた。

FC2ブログ | FC2ヘルプ
FC2ヘルプは、FC2ブログ、FC2動画など、FC2が提供するサービスのマニュアル・問い合わせページです。よくある質問やご利用方法の紹介、障害・メンテナンス情報を公開しています。

 

で実装コードは汚いけど、こんな感じ。

IPアドレスやブラウザ情報なんて分かるわけないので適当に全員同じとしている。

改行コードを合わせる

テキストデータの抽出までは上手く行ったけど、FC2でインポートできなかったりして、5時間ぐらいかかってしまった……。

一番時間がかかったのは

  • ファイル形式は「UTF-8」で改行コードは「\n」
  • 書き込みメッセージの改行コードは「CR + LF(\r\n)」

手動で対応しても形式が異なるので、TeraPadが勝手に改行コードを変えてしまっていた。

サクラエディタを使ってみると改行コードの違いによって表示が異なるので判別できる。

改行コード サクラエディタでの表示
LF
CR
CR+LF

また保存時に注意ダイアログが表示されることで気づいた。

と簡単に書いてるけど、ここまで分かるのに時間がかかった……。

③エクスポート

FC2用のインポート形式にできたら、「ファイル選択」→「インポート」という形で進めていく。

が、20MB以上になったファイルをインポートしてみた。

しばらく待って次のエラー

 

413 Request Entity Too Large
nginx

 

調べてみるとデフォルトのnginx設定では、

 

最大アップロードが1MB

 

になっているらしい。

ユーザには変更権限が無いので、小さなファイル単位にして都度インポートしていくしかない。

 

が、これを手動でやるのはバカバカしい。

 

Seleniumを使ってファイルをエクスポートする

FC2のインポート画面より、ファイル選択してパソコン上のローカルファイルを選択し、1MBを超えないように細切れにしたファイルをアップロードさせていく。

XPATHを使って指定することで可能っぽい。

 

初めて作ってみたけど、簡単だった。

これでサクサクインポートは終了した。

おわりに

背景は、たまたま、まったく見も知らないシニアの方々のTeacupの掲示板利用グループを見たこと。

 

 

シニアA「掲示板の設置方法分からないので、これで解散です」

シニアB「寂しい。最後の1ヶ月毎日投稿するからね。」

 

私「通りすがりの者です。チャッチャッと新規掲示板作っちゃったよー。使ってねーーー」

 

 

とTeacup終了一週間前に自慢気に書き込んでリンクを貼り、過去記事も移行しておいた。

 
 

結果、

 
 

毎日投稿されていた掲示板への書き込みがピタッと止まって、8月1日が過ぎたww

 

何かの詐欺だと思ったんだろうね。

 
 

イラストにするとこんな感じwww

 
 

 
 

だって、台湾のコロナでホテル監禁中だったから、やることが無かったんだもん!!

 
 

情けは人のためならず

※ 「情けは人のためでなく、自分のため」という意味。日本人の誤用率の高い言葉。

ソースコード

Teacupからのテキストファイルの抽出とFC2形式への変換

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