« CPANに☆が | メイン | ディレクトリ内にある写真を「Lightbox JS v2.0」のスライドショーで表示するPerl »

楽天APIを使って楽天アイテムのURLから商品情報を取得するPerl

楽天の個別商品のURLからAPI経由で商品情報をゲットしたい。 例えば「http://item.rakuten.co.jp/shopcode/itemname」みたいな感じのURLから。 だけど、楽天ウェブサービスって、ショップのコードを指定して キーワードでアイテムを所得するAPIはあるんだけど、 ある特定のアイテムの情報をピンポイントで得ることはできないのね。 だから、ショップコードはURLから正規表現でとってきて、 キーワードはアイテムのページのタイトルタグからとってくる。 そんでもって検索APIにかければ、俺のやりたいことができた。 WebService::Rakuten使ってます。 こんな感じ。

#!/usr/bin/perl

use strict;
use WebService::Rakuten;
use LWP::Simple;
use HTML::TokeParser;
use Encode;

our $DEV_ID = 'YUORDEVELOPERID';
our $AFF_ID = 'YOURAFFILIATEID';

my $item = &rakuten_item_from_url("http://item.rakuten.co.jp/amexalpha/ca-sr-500gt/");
print $item->itemName;

sub rakuten_item_from_url {
  my $url = shift;
  my ($title, $shop_code, $keyword, $item);
  
  #get shop code and keyword from title tag
  $shop_code = $1 if $url =~ m!item.rakuten.co.jp/(.*?)/!;
  my $content = get($url);
  my $p = HTML::TokeParser->new(\$content);
  $p->get_tag("title");
  $title = $p->get_trimmed_text;
  Encode::from_to($title,"euc-jp","utf-8");
  $keyword = $1 if $title =~ m/【楽天市場】(.*?):.*/;

  my $api = WebService::Rakuten->new(
    dev_id => $DEV_ID,
    aff_id => $AFF_ID,
    );
  
  my $res = $api->item_search(
    $keyword,
    {
      shopCode => $shop_code,
      hits     => 1,
      page     => 1,
    }
    );
  if ($res->status eq 'Success'){
    return @{$res->items}[0];
  }else{
    return;
  }
}

トラックバック

このエントリーのトラックバックURL:
http://yusukebe.com/mt/mt-tb.cgi/2181

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)


ブログSEO対策:track word seo