# $Id: /mirror/gungho/lib/Gungho/Component/Scraper.pm 4037 2007-10-25T14:20:48.994833Z lestrrat $ # # Copyright (c) 2007 Daisuke Maki # All rights reserved. package Gungho::Component::Scraper; use strict; use warnings; use base qw(Gungho::Component); use Web::Scraper::Config; __PACKAGE__->mk_classdata(_scrapers => {}); sub scrape { my ($c, $response, $arg) = @_; my $scraper = $c->_load_scraper($arg); $scraper->scrape($response->content); } sub _load_scraper { my ($c, $config) = @_; my $name; if (! ref $config) { $name = $config; } else { $name = do { require Data::Dumper; require Digest::MD5; local $Data::Dumper::Indent = 1; local $Data::Dumper::Sorkeys = 1; local $Data::Dumper::Terse = 1; Digest::MD5::md5_hex( Data::Dumper::Dumper( $config ) ); }; die if $@; } $c->_scrapers->{ $name } ||= Web::Scraper::Config->new($config); } 1; __END__ =head1 NAME Gungho::Component::Scraper - Web::Scraper From Within Gungho =head1 SYNOPSIS # Either setup $name in config, or call # $c->register_scraper_config($name, $config); $c->scrape($response, $name); $c->scrape($response, $config); =head1 DESCRIPTION This component allows you to use Web::Scraper (via Web::Scraper::Config) from within Gungho. =head1 METHODS =head2 scrape ($response, $config) =cut