Show
Ignore:
Timestamp:
08/16/09 19:59:15 (4 years ago)
Author:
yusukebe
Message:

modified interface!

Location:
lang/perl/Acme-Idols-JapaneseGravure/trunk
Files:
3 added
1 modified

Legend:

Unmodified
Added
Removed
  • lang/perl/Acme-Idols-JapaneseGravure/trunk/lib/Acme/Idols/JapaneseGravure.pm

    r34354 r34879  
    44use URI; 
    55use Web::Scraper; 
     6use Acme::Idols::JapaneseGravure::Idol; 
    67 
    78our $VERSION = '0.01'; 
     
    2021    warn "wait...\n"; 
    2122    my $urls = $self->_scrape_url_list(); 
    22     my @all_names; 
     23    my @all_idols; 
    2324    for my $url ( @$urls ) { 
    24         my $names = $self->_scrape_name( $url ); 
    25         push( @all_names, @$names ); 
     25        my $idols = $self->_scrape_idol( $url ); 
     26        push( @all_idols, @$idols ); 
    2627    } 
    27     return \@all_names; 
     28    return \@all_idols; 
    2829} 
    2930 
     
    3839} 
    3940 
    40 sub _scrape_name { 
     41sub _scrape_idol { 
    4142    my ( $self, $url ) = @_; 
    4243    my $scraper = scraper { 
    43         process "div#mw-pages li a", 'names[]' => 'TEXT'; 
     44        process "div#mw-pages li a", 'links[]' => { 
     45            name => ['@title',sub { $_ =~ s/(?:\(.*\))$//g; $_=~ s/\s//; } ], 
     46            url  => '@href', 
     47        }; 
    4448    }; 
    45     my $uri = URI->new( $url ); 
    46     my $res = $scraper->scrape( $uri ); 
    47     my @names; 
    48     for my $name ( @{ $res->{names} } ){ 
    49         $name =~ s/(?:\(.*\))$//g; 
    50         push( @names, $name ); 
     49    my $uri = URI->new($url); 
     50    my $res = $scraper->scrape($uri); 
     51    my @idols; 
     52    for my $link ( @{ $res->{links} } ) { 
     53        push( 
     54            @idols, 
     55            Acme::Idols::JapaneseGravure::Idol->new( 
     56                url  => $link->{url}, 
     57                name => $link->{name} 
     58            ) 
     59        ); 
    5160    } 
    52     return \@names; 
     61    return \@idols; 
    5362} 
    5463