Myページ
ホーム
コミュニティの人々
ソフトウェア
技術紹介
適用分野
Tyzohとは
ご意見お問い合わせ

ワタナベのブログ

2008年6月アーカイブ

自分だけ旧Tyzohブログをインポート

そろそろ私も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)

« 2008年2月 | メインページ | 2008年7月 »

プロフィール

ワタナベ

サーバ管理が趣味の渡邉充隆です。

仮想化やネットワーク構成に興味があります。
あとは、ウェブ系の技術(プログラミングからインフラまで)も好きで、特にデータの見せ方などを工夫することで情報の流通や再活用を促進する技術を研究しています。

dev.tyzoh.jp では ssdb の(コアではなく)周辺のコードをいじっています。

tumblr / del.icio.us

RSSフィード

コミュニティの人々 | ソフトウェア | 技術紹介 | 適用分野 | Tyzohとは | ご意見お問い合わせ

Copyright (C) 2004-2008 Nihon Unisys, Ltd. All Rights Reserved.
Powered by Movable Type Open Source