楽天 Web Service を使ってジャンル一覧を生成してみた

待ちに待った楽天 API が公開されました。Amazon Web Service に似てわかりやすい 楽天 Web Service って名前です。

こりゃぁアサマシイことをしなければならないので触ってみました。取りあえずちょっと触ってみた感触では、レスポンスが帰ってこない場合が多いのが悪い印象。Amazon の初期の時もそうでしたが安定性がまだイマイチかな。

あと、ジャンル一覧を生成してみたのですが、ジャンル ID がシンボリックリンクのようにネストして尾根地物が出てくるので、スクリプト側で度の ID を解析したかを覚えてやらないと無限ループになる。genrePath っていうパラメータがあって

結果セットに祖先ジャンル(親ジャン ルよりも上のジャンル)を含めるか否か

とあるけど、これだけではシンボリックリンクは削除されない模様。もっとも楽天サイトそのもののジャンルを見てみるとループしてるので仕様ってことか・・・。

- スポンサーリンク -

楽天ジャンル一覧を生成するスクリプト

ってことで、ジャンル一覧を生成するスクリプトはこんな感じになりました。実行すると、すごい数のジャンル ID が生成される。3時間ほど結果が帰ってこないのでご注意を。

#!/usr/bin/perl -w

use strict;
use CGI;
use Jcode;
use LWP::UserAgent;
use XML::Simple;
use Data::Dumper;


my $api = 'http://api.rakuten.co.jp/rws/1.1/rest?developerId=[YOUR_developerID]&operation=GenreSearch&version=2006-12-26&genrePath=0&genreId=';
my $hs  = {};
&get($hs, 0, 0);

sub get {
    my $hs = shift;
    my $id = shift;
    my $lp = shift;

    return if($hs->{$id});
    $hs->{$id} = 1;
    my $data = &xml($id);
    sleep 0.5;
    foreach my $id (@{$data->{Body}->{GenreSearch}->{child}}) {
        print '  ' x $lp . qq/$id->{genreName} ($id->{genreId})\n/;
        &get($hs, $id->{genreId}, $lp+1);
    }
}

sub xml {
    my $id = shift;

    for(1..5) {
        my $ua  = LWP::UserAgent->new;
        my $res = $ua->request( HTTP::Request->new(GET => $api . $id) );
        if($res->is_success) {
            $XML::Simple::PREFERRED_PARSER = 'XML::Parser';
            my $text = $res->content;
               $text = pack('C0A*', $text);
            return XMLin($text);
        }
        sleep 1;
    }
    die "cannot get url";
}

楽天ジャンル一覧(上記スクリプトの結果)

Amazon の node に比べて膨大すぎる量。この分量を管理するのはちょっとシンドイかも。さて、あさまし・スクリプトはどう作ったモノか・・・ほぼ固定値(と思われる)なので、高速化のために生成したジャンル ID はそのままスクリプトの中に埋め込んでも良さそう。 ちなみに、楽天 Web Service のパフォーマンスだけど、このスクリプトの wait を外した場合の実行時間から推測するに、平均して 2 req/sec 程度のようです。
規約に、1デベロッパーIDにつき、1秒に1回以下のリクエストとしてください。
とあるので、AWS とかと同じ感覚で何か作るときはキャッシュの実装は必須でしょうね。

実行すると、32697ジャンルもあって、エントリーに記述するのはキツイので2階層までで省略すると、

CD・DVD・楽器 (101240)
  CD (101311)
  レコード (200531)
  カセット (205900)
  DVD (101354)
  UMDビデオ (207644)
  LD (200532)
  ビデオ (101327)
  楽器 (112493)
  その他 (112960)
インテリア・寝具 (100804)
  収納家具 (200166)
  ソファ (205515)
  ソファベッド (215472)
  ベッド関連 (100823)
  寝具 (215566)
  介護寝具 (208252)
  テーブル (111346)
  イス (111363)
  ダイニングセット (210102)
  デスク (200167)
  ライト・照明 (100805)
  カーペット (111355)
  カーテン (205677)
  ロールスクリーン (205678)
  シェード・スクリーン (205679)
  ブラインド (205680)
  カーテンレール・用品 (215751)
  インテリアファブリック(クッション・テーブルクロス・布装飾) (200119)
  インテリア小物・置物 (100863)
  鏡 (210143)
  子供部屋(インテリア・寝具・グッズ) (203024)
  ベビー家具 (200822)
  オフィス家具 (100933)
  その他(洋家具) (101863)
  その他(和家具) (101861)
  その他 (101859)
おもちゃ・ホビー・ゲーム (101164)
  おもちゃ (101189)
  趣味・コレクション (101165)
  ゲーム (207641)
  パーティー・イベント用品・販促品 (213731)
  手芸・クラフト (100872)
  占い・開運・風水・パワーストーン (112132)
  アート・美術品・骨董品・民芸品 (101222)
  囲碁・将棋・麻雀 (206324)
  その他 (112928)
キッズ・ベビー・マタニティ (100533)
  ジュニア (207698)
  キッズ (111078)
  ベビー (111102)
  マタニティ・ママ (111116)
  その他 (101828)
キッチン・日用品雑貨・文具 (215783)
  和食器 (100698)
  洋食器 (301257)
  子供向け食器 (210206)
  その他食器 (101848)
  調理器具 (100771)
  その他(食器・調理用具) (101832)
  容器・ストッカー・調味料容器 (100762)
  キッチン雑貨・小物・消耗用品 (100629)
  お弁当グッズ (407057)
  調理機器・家電・業務用機器 (301451)
  業務用厨房機器・調理器具 (210238)
  システムキッチン (210243)
  キッチン収納 (215685)
  日用品・生活雑貨 (100554)
  手芸・クラフト (100872)
  文具 (100901)
  印鑑・ハンコ (111173)
  ヒーリング・リラクゼーション (100878)
  日曜大工・作業用品 (100890)
  仏具・神具 (100822)
  エクステリア (100880)
  冠婚葬祭サービス (200412)
  業務用品・サービス (200413)
  ペット・ペットグッズ (101213)
  パーティー・イベント用品・販促品 (213731)
  その他 (112779)
ジュエリー・腕時計 (216129)
  ジュエリー・アクセサリー(女性用) (100486)
  ジュエリー・アクセサリー(男性用) (407326)
  ペアアクセサリー (301966)
  結婚指輪(マリッジリング) (206951)
  婚約指輪(エンゲージリング) (206952)
  石・天然石・パワーストーン (300978)
  ジュエリー・アクセサリー用品 (407455)
  メンズ腕時計 (301981)
  レディース腕時計 (302050)
  ペアウォッチ (302123)
  男女兼用腕時計 (302133)
  アウトドア用腕時計 (407924)
  キッズ用腕時計 (213891)
  キャラクター腕時計 (302144)
  時計用ベルト・バンド (302145)
  ケア・修理用品・電池 (302178)
  その他 (112747)
スポーツ・アウトドア (101070)
  自転車 (101157)
  ゴルフ (101077)
  野球 (200168)
  サッカー (200169)
  フットサル (214512)
  テニス (100558)
  マリンスポーツ (101100)
  ウインタースポーツ (200067)
  ストリート系スポーツ (200061)
  フィットネス・トレーニング (200170)
  ヨガ・ピラティス (407916)
  アウトドア (101975)
  フィッシング (111961)
  水泳 (201937)
  格闘技 (201945)
  バドミントン (201950)
  卓球 (201955)
  バスケットボール (201959)
  バレーボール (201963)
  ソフトボール (202652)
  ハンドボール (214668)
  ドッジボール (302471)
  体操・ダンス (214673)
  剣道 (205075)
  柔道 (214706)
  空手 (214712)
  ボクシング (205072)
  ラグビー (302472)
  陸上競技 (205074)
  フットサル (214512)
  ビリヤード (213716)
  ダーツ (213721)
  ボウリング (407940)
  スカッシュ (407941)
  乗馬 (402486)
  ラクロス (407942)
  ゲートボール (402504)
  アメリカンフットボール (402512)
  アイススケート (407944)
  アイスホッケー (407945)
  その他スポーツ用品 (101071)
  格闘技グッズ (101182)
  スポーツグッズ (112149)
  カード(スポーツ) (207635)
  その他 (101893)
ダイエット・健康・介護 (100938)
  ダイエット (100984)
  健康食品 (100987)
  健康用品 (101035)
  コンタクト・コンタクト用品 (205789)
  医薬品 (201541)
  福祉・介護 (101058)
  関連書籍 (209171)
  その他 (101876)
ドリンク・お酒 (100316)
  ワイン (100317)
  洋酒 (100329)
  ビール・地ビール (100324)
  チューハイ (408186)
  日本酒 (100337)
  焼酎 (110662)
  中国酒 (201344)
  マッコリ (403311)
  その他(アルコール) (204456)
  水・ミネラルウォーター (201351)
  ソフトドリンク (100344)
  コーヒー・ココア (100356)
  紅茶 (100351)
  日本茶 (100361)
  中国茶 (200029)
  ハーブティー (201439)
  関連書籍 (208801)
  その他(ドリンク) (101785)
パソコン・周辺機器 (100026)
  パソコン・コンピュータ (100027)
  PDA(携帯情報端末) (110353)
  周辺機器 (100057)
  パーツ (100087)
  アクセサリー (100094)
  ソフトウェア (100103)
  オフィス・サプライ (100130)
  通信・サービス (100140)
  パソコンデスク (215698)
  パソコン関連書籍 (101287)
  その他 (211741)
バッグ・小物・ブランド雑貨 (216131)
  バッグ (100472)
  眼鏡・サングラス (100467)
  雑貨・小物 (100454)
  その他 (216132)
ファッション・アパレル・靴 (100371)
  メンズ・紳士服 (100372)
  レディース・婦人服 (100380)
  和服・着物 (100428)
  カジュアル (100387)
  インナーウェア・ナイトウェア (100433)
  靴 (100480)
  キッズ・ベビー・マタニティ (100533)
  関連書籍 (216749)
  その他 (101801)
花・園芸・エクステリア (100005)
  フラワー (113084)
  観葉植物 (202513)
  ミニ観葉植物 (215181)
  観葉植物用グッズ (409549)
  植木・盆栽・果樹 (202528)
  造花 (110042)
  ガーデニング (100012)
  日曜大工・作業用品 (100890)
  エクステリア (100880)
  住宅建材 (100893)
  関連書籍 (208747)
  その他 (101737)
ペット・ペットグッズ (101213)
家電・AV・カメラ (211742)
  生活・美容家電 (204200)
  モバイル・携帯電話 (100123)
  テレビ (100141)
  DVDレコーダー・プレーヤー・HDDレコーダー (200225)
  ホームシアター・プロジェクター (204198)
  ビデオカメラ・デッキ (204199)
  オーディオ (100155)
  デジタルカメラ (100083)
  カメラ (100212)
  その他 (101739)
車・バイク (101114)
  自動車車体(新車・中古車) (101115)
  カー用品 (101126)
  バイク車体(新車・中古車) (200304)
  バイク用品 (200305)
  4輪バギー・スノーモービル・水上バイク (304564)
  その他 (112919)
食品・スイーツ (100227)
  水産物・水産加工品 (100236)
  肉・肉加工品 (100228)
  フルーツ・果物 (100246)
  野菜 (200990)
  惣菜・食材 (100268)
  キムチ・漬け物・梅干し (100250)
  チーズ・乳製品 (100262)
  卵 (201085)
  麺類 (100256)
  洋菓子(スイーツ)・和菓子 (100283)
  米・雑穀・シリアル (110472)
  パン・ジャム (100293)
  調味料 (100300)
  ダイエットフード (111903)
  その他(食品) (101769)
美容・コスメ・香水 (100939)
  スキンケア (100944)
  メイクアップ (204233)
  メイク雑貨・小物 (111787)
  男性用化粧品 (100968)
  香水・フレグランス (111120)
  ボディケア (100960)
  ネイル (201454)
  ヘアケア (100940)
  バスグッズ (204238)
  デンタルケア (204745)
  美容ダイエット・脱毛・矯正製品 (204245)
  アロマテラピー (111207)
  美容ドリンク・サプリメント (216740)
  カラーコンタクト (408099)
  関連書籍 (216745)
  その他 (101877)
本・雑誌・コミック (200162)
  小説・エッセイ (101266)
  資格・検定 (208663)
  ライフスタイル (208726)
  ホビー・スポーツ・美術 (101248)
  絵本・児童書・図鑑 (208866)
  語学・学習参考書 (101293)
  旅行・留学・アウトドア (101242)
  人文・地歴・哲学・社会 (101278)
  ビジネス・経済・就職 (200446)
  PC・システム開発 (101287)
  科学・医学・技術 (101281)
  コミック (101299)
  ティーンズ文庫 (209260)
  エンターテインメント (209298)
  写真集・タレント (101257)
  文庫・新書 (209331)
  稀覯本 (200450)
  復刊書籍 (200452)
  オンデマンド書籍 (200453)
  楽譜 (101254)
  雑誌 (101302)
  新聞 (200098)
  洋書 (101297)
  カレンダー・ポスター・パンフレット (101308)
  デジタルコミック (411448)
  デジタル写真集 (411470)
  電子書籍 (411482)
  その他 (203063)
旅行・出張・チケット (101381)
  トラベル (101382)
  チケット・金券・ギフト券 (101416)
  その他 (101954)
不動産・住まい (200163)
  住宅 (111427)
  その他 (405417)
サービス (101438)
  通信講座・通学講座・教材 (101445)
  冠婚葬祭サービス (200052)
  業務用品・サービス (202559)
  金融・保険 (101439)
  キャリア・人材・企業情報 (101444)
  その他 (101963)
デジタルコンテンツ (402853)
  音楽ダウンロード (402854)
  動画ダウンロード (402892)
  動画ストリーミング (402902)
  デジタルコミック (411448)
  デジタル写真集 (411470)
  電子書籍 (411482)
  その他 (402912)

全結果はファイルが 1Mbyte と巨大になったので欲しい方はこちらからダウンロード下さい。

楽天 Web Service ジャンル ID 一覧

- スポンサーリンク -