2008年6月アーカイブ
そろそろ私もblogを復活したほうがよい雰囲気になってきました。
手始めに、せっかくの過去のXoopsベースのブログでの投稿をどうにかこのMobableTypeにマージしたいという多方面のニーズをくみ取って(?)ちょこちょこっとインポート用のデータを吸い出すプログラムを書きました(末尾に掲載)。
このへんを参考にスクレイピングをしています。XPathやCSSセレクタの表現で簡単に目的のコンテンツが取れますねぇ。いや、実に簡単。
旧ブログのエントリは全て吸い出しましたので、旧ブログの投稿をされていた方で、ご希望の方は、公開状態を「未公開(原稿)」にしてインポートしますので、コメントください。(ただし旧ブログのコメントは吸い出していません。やろうと思えばできると思いますが。。。)
ところで、「コミュニティの人々」のページが更新されないような気がしていましたので、 少し探ってみると、SQLほにゃららのエラーが出て同ページの再構築に失敗していました。でもテンプレートの編集画面で再構築を実行すると、なぜか成功するんですねぇ。不思議。
ということで、今後ともよろしくお願いします。
#!/usr/bin/perl
use strict;
use warnings;
use utf8;
use URI::Fetch;
use LWP::UserAgent;
use HTML::Selector::XPath;
use HTML::TreeBuilder::XPath;
use HTML::Entities qw/decode_entities/;
use Encode;
my $base = 'http://www.tyzoh.jp/www.tyzoh.jp/modules/weblog/details.php_blog_id=%s';
my $id = shift or die "usage: $0 ";
my $ua = LWP::UserAgent->new();
$ua->env_proxy();
my $res = URI::Fetch->fetch(sprintf($base, $id), (UserAgent=>$ua))
or die URI::Fetch->errstr;
my $tree = HTML::TreeBuilder::XPath->new;
$tree->parse($res->content);
$tree->eof;
my $content = $tree->findnodes(selector('#content'))->shift;
my $date = $content->look_down(_tag => 'div', class => 'blogDate')->as_text;
$date =~ s#(\d\d\d\d)/(\d\d)/(\d\d)#$2/$3/$1#;
my $entry = $content->look_down(_tag => 'div', class => 'blogEntry');
my $title = decode('Shift_JIS', $entry->look_down(class => 'blogTitle')->as_text);
my $auther = decode('Shift_JIS', $entry->findnodes(selector('.blogShoulder a'))->shift->as_text);
my $time = $entry->look_down(class => 'blogShoulder')->as_text;
$time =~ m/.*\((\d?\d):(\d?\d) (pm|am)\)$/;
$time = sprintf "%02d:%02d:00", (($3 eq 'pm' and $1 != 12) ? $1 + 12: $1), $2;
my $html = $entry->look_down(_tag => 'div', "class" => "blogContents")->as_HTML;
(以下略)
インポート用のデータフォーマットは、「Movable Type のブログ記事インポートフォーマット 」を参考にしました。
自分だけ旧Tyzohブログをインポートの続きを読む
ワタナベ (2008-06-30 01:18) | コメント(8)| トラックバック(0)
プロフィール
ワタナベ
サーバ管理が趣味の渡邉充隆です。
仮想化やネットワーク構成に興味があります。
あとは、ウェブ系の技術(プログラミングからインフラまで)も好きで、特にデータの見せ方などを工夫することで情報の流通や再活用を促進する技術を研究しています。
dev.tyzoh.jp では ssdb の(コアではなく)周辺のコードをいじっています。
月別アーカイブ
Copyright (C) 2004-2008 Nihon Unisys, Ltd. All Rights Reserved.
Powered by Movable Type Open Source