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からもらってきた