M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2006年3月 4日 05:42

PukiWikiの特定ページからWiki記法を取り出す

このエントリーをはてなブックマークに追加 mixiチェック

Planet DTP@jp の設定ファイルのうち、登録者の部分は、DTPWiki に置いてあって、Planet で登録者のページを巡回(正確に言うとフィードを取得)する直前に、DTPWiki から引っ張ってきて設定ファイルをオンデマンドで生成していますが、今現在だと、wget して正規表現でイランの落として、WikiName と判断されたところに付く「?」マークを除去したりして、なんだかスマートじゃありません。

というわけで、PukiWiki の特定のページから、中身の Wiki 記法の部分だけ取り出してみようとおもいました。

勉強?のため、html をパースしてみようということで、html::Phaser を使うため、http://homepage3.nifty.com/hippo2000/perltips/html/Parser.htmGAC なぜなにGAC->PHP->アンカータグ リンク先URL置換 [www.gac.jp] のサンプルをまるっと使ってみました。

以下は、Windows ActivePerl です。Linux UTF-8環境や Mac OS X 環境では binmode の行を取るといいのではないでしょうか。

#/usr/bin/perl -w
 
use strict;
use LWP::Simple;
use HTML::Parser ();
use utf8;
use Encode;
binmode STDOUT, ":encoding(cp932)";
 
sub start_handler {
    return if shift ne 'pre';
    my $attr = shift;
    return if $attr->{'id'} ne 'source';
    my $self = shift;
    $self->handler(text => sub { print shift }, 'dtext');
    $self->handler(end  => sub { shift->eof if shift eq 'pre'; },
                           'tagname,self');
}
 
my $p = HTML::Parser->new(api_version => 3);
$p->handler( start => \&start_handler, 'tagname,attr,self');
 
#$p->parse_file(shift || die) || die $!;
my $html = get('http://dtpwiki.jp/?cmd=source&page=planetdtpconfig');
 
$html = decode('euc-jp',$html);
$p->parse($html);
print "\n";
 

ここまでして、実は生テキストで落ちてくるプラグインがあるなんて言いそうなので怖いです。「PukiWiki Wiki記法」とかで調べたら、PukiWiki をデフォルトのママ使用しているサイトばかり引っかかってしまいそれ以上探さなかったんです。

投稿 大野 義貴 [Script] | |

トラックバック(0)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/1566

コメントする