144
ブログから画像ファイルを抜き出す際、Windowsの場合は、「GetHTMLW」を使って抜き出す方法が一般的なようですが、このブログの場合、数万ファイルもあるため、実際に実行すると延々と終わる気配がないし、そのうちメモリ不足で固まるしで・・・あまり現実的な方法ではないようです。

そこで、他の方法がないかよく考えてみると、エクスポートファイルなど、全体のソースがあれば、そのファイルから、画像データに対するURLを抜き出すのは、それほど難しいことではないため、エクスポートやその他のファイルを使ってダウンロードすることにしました。

1.全記事を1ファイルにする。
全画像リンクを抽出するのが目的ですから、漏れがないように。
・エクスポートファイル(全記事の内容)
・TOPページ
・CSS
私は、以上の3つをcatで結合して1ファイルにしました。

2.画像ファイルへのリンク(URL)抜き出し&ソート
現在のMacOSXは、curlが標準なのでcurlを使って行います。
(他のOSならwgetの方が楽かも。MacOSでも、wgetは、ftp://ftp.gnu.org/pub/gnu/wget/から入手できますが、コンパイル環境がないので。)

sed ‘s/[><)(;=&\"]/ /g’ post.html | awk -v s=http: ‘{for(i=1;i<=NF;++i) if ($i~s)print “curl –create-dirs -o ” $i ” -O ” $i}’   |  sort | uniq | egrep ‘avalon1982.coco|robot.am’ | egrep ‘jpg|png|gif’ | sed ‘s/.shared\/image.html?\///g’ > sh1

■解説
sed ‘s/[><)(;=&\"]/ /g’ post.html ・・・(1)
awk -v s=http: ‘{for(i=1;i<=NF;++i) if ($i~s)print “curl –create-dirs -o ” $i ” -O ” $i}’ ・・・(2)
sort | uniq・・・(3)
egrep ‘avalon1982.coco|robot.am’・・・(4)
egrep ‘jpg|png|gif’・・・(5)
sed ‘s/.shared\/image.html?\///g’ ・・・(6)
(1) エクスポートファイル(post.html)からURLを抽出するための前準備(タグの除去等)
(2) URLを抽出 + curlコマンド付与 ※画像以外のURLも含まれます。
 出力先(-o)を同じURLにしてますが、これにより、ダウンロード先のディレクトリは「http/」
 から始まるディレクトリ構成になります。(構成が元のままなので移行後非常に楽です。)
(3) ソートして重複行削除
(4) ドメインマッピング前のココログURLとこのブログの現URLの行のみ抽出
(5) 画像の拡張子の行のみ抽出
(6) ココログ特有の拡大表示を実URLへのリンクへ変換
 (こういうヤツ→http://avalon1982.cocolog-nifty.com/.shared/image.html?/photos/uncategorized/200402111007.jpg)
・・・以上を実行するとターミナルのハードコピーの様な状態になります。
   実行時間:約4秒
   エクスポートファイル:9.6MB → 抽出用シェル:426KB(5622行)
   5622行・・・これは、アルバムの写真を含んでいません。

※MacがUNIXマシンでよかった。

3.画像ファイルのみ抜き出し。
上記でできあがった「sh1」を実行するとダウンロードできます。(30分ほどでダウンロード完了しました。)

■実行中画面
145

続編として「Macでココログのマイフォト(アルバム)から画像データを漏れなくダウンロードする方法」を書きました。よかったら参考にして下さい。

Related Posts Plugin for WordPress, Blogger...
© 2011 ロボットのいる生活。 Suffusion theme by Sayontan Sinha