iMacros でエキブロの鍵コメもバックアップ

はじめに


エキサイトブログは今まで数々の危機にさらされ(笑)、
そのたびに保存保存とみんなで色々な方法を考えてきた。
昔はうまく保存できる方法を見つけられたのだが、
「非公開コメント」通称「鍵コメ」機能ができてから、
認証に使用する Cookie が複数になり、
通常のダウンローダーではうまくバックアップできなくなった。
記事だけの保存なら問題ないのだが、
コメントも含めて記事の一部と考えているので、
やはりコメントも保存したいのである。

どうすれば保存できるのか。
もうこれはブラウザの表示をエミュレートするしかない。
そこで iMacros を使えば良いのではないかと考えた。

これはブラウザ上で動く web テストにも使えるツールで、
人間がクリックしたり入力したりする動作をマクロとして記録し、
その通りになぞって実行することができるツールである。
人間と同じ動作を自動的にやってくれるのだから、
認証とか Cookie とかはまったく問題ナシ。
人間ができることならほとんどすべてできると考えて良い。

そして実験の結果、鍵コメまで保存できることが確認できたので、
情報共有する次第である。

下ごしらえ


・私は WindowsXP Firefox 3.5.9 で試した。
 IE 上で動く iMacros もあるらしい。試してない。
・以下から iMacros のアドオンをインストールする。
 iMacros for Firefox
・保存したい一番古いページの URL と、一番新しいページの URL を調べておく。
 「次のページ」のリンクをたどるので、
 投稿が一番古い新しいではなく、記事日付で見ること。
・自分のマシンに記事を保存する用のフォルダを用意する。

実行方法


・以下のソース中の最古 URL、最新 URL、保存先フォルダ名を書きかえる。
・実行前にログインしておく。
 (自動ログインからもやればできるんで、やりたい人は自分でやって)
・iMacros の Options -> General -> TimeoutLimit を 86400 とかにしておく。
 General -> Replay speed も Medium や Slow が良いと思う(回線速度を考慮)。
・以下のファイルを test.js などの名前で保存して、iMacros から実行(Play)。
 (スペースが全角なので注意)

//--------------------------------------------------
// 以下3つをサイトに合わせて修正
// 一番古い URL
var surl = "http://xiaoxia.exblog.jp/10819727/";
// 一番新しい URL
var eurl = "http://xiaoxia.exblog.jp/8551907/";
// ページを保存するフォルダ
// ・フォルダの区切り文字\は「\\」にする
// ・「My Cocuments」は「MYDOCU~1」にすれば保存できることを確認済み
var outdir = "C:\\iMacros\\Downloads";
// 上の文をコメントアウトして、その代わりに下を有効にすると、
// Options -> Folder Downloads 指定以下に保存される
// var outdir ="*";
//--------------------------------------------------

var macro;
var jsLF = "\n";
var i = 0;

iimDisplay("Send Macro via iimPlay:" + i);
macro = "CODE:";
macro += "URL GOTO=" + surl + jsLF;
iimPlay(macro);

while (1) {
  i++;
  iimDisplay("Send Macro via iimPlay:" + i);
  // ページを保存し、表示中 URL をマクロ外から参照できる値に保存するマクロ
  macro = "CODE:";
  // FILE={{!URLCURRENT}} を FILE=* に変えると記事タイトル名で保存される
  macro += "SAVEAS TYPE=HTM FOLDER=\"" + outdir + "\" FILE={{!URLCURRENT}}" + jsLF;
  macro += "SET !EXTRACT {{!URLCURRENT}}" + jsLF;
  // マクロ実行
  iimPlay(macro);

  // マクロ外から URL を参照
  // (location.href だと chrome:// が来ちゃうのでダメだったの)
  surl = iimGetLastExtract(0);
  // 最後の URL だったらここで抜ける。
  // 最後ではないなら、ページ繰りのマクロを実行
  if (surl == eurl) {
    break;
  } else {
    macro = "CODE:";
    // 私のページはページ繰りリンクが以下のようになっていた
    // <A class="newer_page" HREF=http://xiaoxia.exblog.jp/数字/>< 前のページ</A>
    // たぶん多くの人は同じだと思うけど、
    // <A class="newer_page" ... になっていない人は修正する
    //  TYPE=タグ名 ATTR=一意にこのタグを識別できるような属性
    macro += "TAG POS=1 TYPE=A ATTR=CLASS:newer_page" + jsLF;
    // マクロ実行
    iimPlay(macro);
  }
}
iimDisplay("Script completed.");
iimExit();


保存先フォルダに「http_xiaoxia.exblog.jp_数字_.htm」みたいな名前で
HTML が保存される。
「SAVEAS TYPE=HTM ...」の部分を「SAVEAS TYPE=CPL ...」に変えると、
保存先フォルダに「http_xiaoxia.exblog.jp_数字_」というフォルダが作成され、
画像から js ファイルから何から全部保存されるようになる(実験済み)。
IE なら「SAVEAS TYPE=MHT ...」にすれば、
1ファイルで画像もすべて保存できるのではないか(実験してない)。
どんな指定ができるかは以下を参照(英語だけどな)。
SAVEAS - iMacros

可能な範囲で質問も受けますので、コメントでお知らせください。

注意とか


・まずは数個の URL で試したらいいよ。
・ブラウザの表示を再現するツールなので、ブラウザにブログが表示される。
 私のようにブログを家族に隠している人は、実行時に注意すること(笑)
・保存した HTML を他サービスへインポートしたい人は、自分で考えて。

iMacros って色々書けて面白いよ。
Main Page - iMacros

追記:
harryさんよりコメントで、ハマった点と解決法を教えていただいたので、
記事内に引用しちゃう。
Win XP Pro SP3 (Windows7 downgrade) + Firefox 3.6.3

(1) iMacros の操作ウィンドウを×で閉じてしまい、出し方が分からなかった。
  →ツールバーにアイコンが追加されていた。
(2) コピペした js をどこへ保存すれば良いか分からなかった。
  → iMacros が導入された、My Documents\iMacros\Macros
(3) js を Play も Edit もできなかった。
  → UTF-8 で保存しないとダメなようだ。
(4) ダウンロード先フォルダは存在しないと作ってはくれないようだ。
  → C:\\Docume~1\\ユーザーID\\MyDocu~1\\iMacros\\Downloads ならばOK。
   おそらく、c: からのフルパスじゃなく、MyDocu~1 で始めれば良かったのだろう。


追記2:
指定した保存先フォルダがない場合は、保存されないだけで、エラーは発生しません。
保存先フォルダの存在チェックをすると、OSに固有のソースになってしまう
(Win だと ActiveXObject を使うぽい)ので、
保存先フォルダがあるかどうかは、自分でちゃんと確認してください。
  var outdir ="*";
にすると、Options の Donwloads の設定値が使用されるので、
楽チンだと思います。

追記3:
例えば、1件の表示と保存に1秒かかるとすると、
1時間で、60秒 x 60件 = 3600件保存します。
回線の状況によっては、それ以上時間がかかるでしょう。
何秒くらいでページめくりが発生しているかを観察すると、
保存したい記事数から、
全部の終了にはだいたいどのくらいの時間がかかるのか、概算できます。
[PR]
Commented by Harryblog at 2010-06-22 22:04
ありがとう。使わせて貰いました。

いくつか(ワシがハマった点)を補足しておいた方がいいかな。
Win XP Pro SP3 (Windows7 downgrade) + Firefox 3.6.3

(1) iMacros の操作ウィンドウを×で閉じてしまい、出し方が分からなかった。
  →ツールバーにアイコンが追加されていた。
(2) コピペした js をどこへ保存すれば良いか分からなかった。
  → iMacros が導入された、My Documents\iMacros\Macros
(3) js を Play も Edit もできなかった。
  → UTF-8 で保存しないとダメなようだ。
(4) ダウンロード先フォルダは存在しないと作ってはくれないようだ。
  → C:\\Docume~1\\ユーザーID\\MyDocu~1\\iMacros\\Downloads ならばOK。
   おそらく、c: からのフルパスじゃなく、MyDocu~1 で始めれば良かったのだろう。

TYPE=CPL もやってみます。
Commented by xiaoxia at 2010-06-22 22:13
●harry師
コメント有難うございます。解決法まで書いていただけて大変嬉しいです。記事内にもまるっとコピーさせていただきます。
Commented by naritto at 2010-06-22 22:45
Windows Vista Home Premium SP2
Firefox 3.6.3

以上の環境できましたー。ファイル作るときアクセス権限で弾かれて一回失敗しましたけど。
大人しくユーザID下に作ればよかった。
クロームにもあるみたいですね。このためにFirefox入れた俺涙目。
時間のあるときにクロームでもやって見たいと思います。

お疲れ様でした。有難うございました。
Commented by mini_iruka at 2010-06-22 23:49
ありがとうございます!

Windows XP Home Edition SP3
Firefox 3.5.7
この環境でできました。
ブログパーツやアイコンが多いので、TYPE=CPLはそれらを一旦取り除いてから改めてやってみます。
Commented by xiaoxia at 2010-06-23 09:30
なりっとさんもみにいるかさんも、動作環境の報告ありがとうございます。
大変感謝です。

●なりっと様
普段使いにはアドミニ権限のないユーザを使っておられるのでしょうか。
それは正しいですねー。私は常にsudo。いつもadmin。<キケン
そういえば Chrome を失念してました。
結構よくできてるアドオンなので、ちょろめでも動きそうですよね。

●みにいるか様
TYPE=CPLはホントにホントに全部残しますものね、全記事で(笑)
一回取ったのは要らないのに!と思うくらい。
gifとjpgとpngだけ取得、とかできればいいのに、と思いますよねー。
Commented by snowdrop99 at 2010-06-30 10:34
設定通りやってみたんですが、シロウトなのでさっぱり(^^;;

そもそもOptionsがみつからない、と思ったら、Editにしないと表示されないんですね。
Timeout Limitを86400にしたら、夜スタートしたのに、まだ終わらなくて、さっきストップしたんですが、そうするとデータは保存されないんでしょうか?一応、iMacros\\Downloadsにundefinedの名前で生成されてましたが、iMacrosの表示になってました。

環境は以下の通りです。
Windows XP Home Edition SP3
Firefox3.6.6
Commented by xiaoxia at 2010-07-01 13:51
●snowdrop99様
> 設定通りやってみたんですが、シロウトなのでさっぱり(^^;;
すみません、細かく説明すると膨大になりそうだったので、
記事にはだいぶん概要しか書きませんでした。

> Timeout Limitを86400にしたら、夜スタートしたのに、まだ終わらなくて
86400秒なのでまる1日動きます。
中止ボタンを押しても、そこまで保存されたファイルは残ります。

> iMacros\\Downloadsにundefinedの名前で生成されてましたが

上のソースの outdir に指定したフォルダと、
Folder Downloads の指定を再度ご確認ください。
指定がないまたは指定のフォルダが存在しない場合は、保存されません。
また、保存ファイル名はまず
FILE={{!URLCURRENT}}
のままで動かしてみてください。
上にも書きましたが、最初から全部保存しようとしないで、
まず数個がちゃんと取得できるかを確認してからが良いと思います。

> Windows XP Home Edition SP3
> Firefox3.6.6

環境的には問題はないと思います。
Commented by mini_iruka at 2010-07-01 18:48
所要時間は私の場合(ロゴ非表示/ネームカードのみ表示/フレッツ光での接続)、
記事数540件で2時間30分+ぐらいかかりました(^。^;
投稿件数が多い場合は、期間をいくつかに区切って保存するほうがいいと思います。
Commented by xiaoxia at 2010-07-02 09:54
●みにいるかさま
1件3-4分ですよね。結構時間かかるのですねー。私が試した平日の昼間だと1件2-3秒でしたが、色々な条件で差が出そうですね。
Commented at 2010-07-03 20:42
ブログの持ち主だけに見える非公開コメントです。
Commented by xiaoxia at 2010-07-05 09:30
● 2010-07-03 20:42 の鍵さま
某所ではグチにお付き合いくださって有難うございました(^-^;;
今回、私も色々思うところがありました。いやー人生まだまだ勉強ですねー。

ログインが入るようなwebアプリのテストは無料ツールでは難しいことが多いですが、
iMacros は見たままなのでそのようなテストにも使えますよね。
無料で使えて、javascriptで書けるというのも、とっつきがよくていいです。

私もこれからもゆるゆるーんと行こうと思います。
よろしくお願いします(^-^)
by xiaoxia | 2010-06-22 19:01 | ソフトウェア | Comments(11)

ダメ女プログラマ&主婦&腐女子&バイオリン弾き


by 小霞