amazonのエロ本ランキング(1位~100位)を取得する使い捨てプログラムを書いた

コード

use strict;
use warnings;
use WWW::Mechanize;
use HTML::TreeBuilder;

sub get_erorank {
  my %rank_data = (); 
  foreach my $page_number (1..5) {
    my $mech = new WWW::Mechanize( autocheck => 1 );
    $mech->get('http://www.amazon.co.jp/gp/bestsellers/books/10667101/ref=zg_bs_10667101_pg_2?ie=UTF8&pg='.$page_number);
    my $tree = HTML::TreeBuilder->new;
    $tree->parse($mech->content);

    foreach my $zg_tag ($tree->look_down("class", "zg_itemRow")) {
      my $rank = $zg_tag->look_down("class", "zg_rankNumber")->as_text;
      $rank =~ s/\.//;
      my $title = $zg_tag->look_down("class", "zg_title")->as_text;
      $rank_data{$rank} = $title;
    }   
  }
return %rank_data;
}

説明

使用モジュールはMechanizeとTreeBuilderです。Mechanizeで1ページから5ページまでのHTMLを取得しています。あと後TreeBuilderでHTMLを解析して、お目当ての情報(順位とタイトル)を取得しています。LWPでアマゾンのエロ本ランキングを取得すると年齢認証ページに飛ばされてしいます。MechanizeがAgentだと、年齢認証ページに飛ばされず、そのままランキングページにアクセスできます。なのでMechanizeを使っています。

ウェブから情報を自動取得するテクニックが沢山書いてある本

Spidering hacks―ウェブ情報ラクラク取得テクニック101選

Spidering hacks―ウェブ情報ラクラク取得テクニック101選