plaggerでO'reilly系のサイトのEntryFullText

修正:全然だめな可能性もあるぽいなぁ。。。perl.comがだめだった残念。。。

本文中に

http://www.oreillynet.com/common.js

こんなのがあって

xpathでここを抜き出せば大体本文なかんじ

//span[\@id='intelliTxt']

なんだけど、yamlでかけなかったので、

oreilly.pl

sub handle {
    my($self, $args) = @_;
    return 1 if $args->{content} =~ m!http://www\.oreillynet\.com/common\.js!;
    return;
}

sub extract {
    my($self, $args) = @_;
    my $body = '';

    my $extract = "//span[\@id='intelliTxt']";

    eval { require HTML::TreeBuilder::XPath };
    if ($@) {
      Plagger->context->log(error => "HTML::TreeBuilder::XPath is required. $@");
      return;
    }
    
    my $tree = HTML::TreeBuilder::XPath->new;
    $tree->parse($args->{content});
    $tree->eof;
    
      my @children = $tree->findnodes($extract);
      if (@children) {
	no warnings 'redefine';
	local *HTML::Element::_xml_escape = \&xml_escape;
	$body = $children[0]->isElementNode
	  ? $children[0]->as_XML
	    : $children[0]->getValue;
      } else {
	Plagger->context->log(error => "Can't find node matching $extract");
      }

    $body;
}

sub xml_escape {
    for my $x (@_) {
        $x = Plagger::Util::encode_xml($x);
    }
}

handleとかxml_escapeはEntryFullText.pmからもらってきた