ホーム社長ブログ>カーセンサーラボのWEBサービスを使って、中古車のアフィリサイトを作ってみる。

社長ブログ イメージ

カーセンサーラボのWEBサービスを使って、中古車のアフィリサイトを作ってみる。

前回は、楽天WEBサービスを使ったサイトを作ってみましたが、第2弾として、カーセンサーラボのウェブサービスを使ってサイトを作ろうと思います。

まだ、WEBサービスを使ったサイト作りに挑戦して1ヶ月も経ってないし、それほど数を作ったわけでもないけど、現段階の感想としては、どんなWEBサービスでも、ほとんどやり方は同じだという感じがします。

リクエストURLを作って、それにアクセスし、返ってくるXMLデータを加工してページを作ればいいだけです。

これからは、自分の実力アップのためと、同じようなことを考えている人のために、コードを公開していこうと思います。

とりあえず、テストとして、本当にカーセンサーラボのウェブサービスが使えるのかを試すために、簡単なものを作ってみました。車種のカタログデータを取得することができるみたいなので、ベンツのカタログリストを5件取得して、画像を表示させるプログラムです。


#! /usr/bin/perl -w
use strict;
use LWP::Simple;
use XML::Simple;
use Data::Dumper;

# リクエストURLとキーワードの設定
my $request_url = 'http://www.carsensorlab.net/webapi/V2/catalogSearch/?brand=';
my $brand_name = 'ベンツ';
my $count = '5'; # 1ページに表示する件数
my $count_url = "&count=$count"; # リクエストURLに追加する変数

# キーワードをunicodeに変換
$brand_name =~ s/([^\w ])/'%' . unpack('H2', $1)/eg;
$brand_name =~ tr/ /+/;

# リクエストURLの完成形
my $url = $request_url . $brand_name . $count_url; # 完成形リクエストURL

# レスポンスの取得
my $response = LWP::Simple::get($url) or die ("Can't get data from $url: $!");
my $parser = XML::Simple->new;
my $data = $parser->XMLin ($response);

# サーバー出力
print "Content-type: text/html; charset=utf-8\n\n";
print Dumper ($data);
print Dumper ($data->{'CatalogCar'}->[0]->{'ImageFrontUrl'});
print "ヒット数:$data->{'TotalCount'}件\n";
for (0..$count) {
    if (!$data->{'CatalogCar'}->[$_]->{'ImageFrontUrl'}) {
	next;
    }
    else {
	print "<img src=\"$data->{'CatalogCar'}->[$_]->{'ImageFrontUrl'}\" />\n";
    }
}

実際にCGIとして使う時には、削除するかコメントで無効化するのですが、データ構造を確認するために、最後の方にあるにある「print Dumper ($data);」で取得したXMLデータをパースしたものを表示させます。

Data::Dumperモジュールを使うと簡単に、データ構造を確認することができます。

見てみると、以下のようなデータ構造になっていることがわかります。


$VAR1 = {
          'CatalogCar' => [
                          {
                            'BodyType' => "\x{30bb}\x{30c0}\x{30f3}",
                            'ImageFrontUrl' => 'http://img.carsensorlab.net/CSphoto/catalog/ME/S003/ME_S003_F001_M001_1.jpg',
                            'EngineCapacity' => "1995\x{ff5e}2597",
                            'Comment' => {},
                            'BodySize' => [
                                          "4450\x{d7}1690\x{d7}1375",
                                          "4430\x{d7}1705\x{d7}1360",
                                          "4450\x{d7}1690\x{d7}1355"
                                        ],
                            'CatalogUrl' => 'http://catalog.carsensorlab.net/mercedes-benz/190_class/f001/m001/',
                            'Model' => "190\x{30af}\x{30e9}\x{30b9}",
                            'ImageInpaneUrl' => 'http://img.carsensorlab.net/CSphoto/catalog/ME/S003/ME_S003_F001_M001_2.jpg',
                            'CatalogMobUrl' => 'http://csmob.jp/catalog/selectGrade.php?br=ME&md=S003&fm=F001&mc=M001',
                            'McKey' => 'TDAWMZAWMTAWMU1F1015',
                            'No' => '1',
                            'Brand' => "\x{30e1}\x{30eb}\x{30bb}\x{30c7}\x{30b9}\x{30fb}\x{30d9}\x{30f3}\x{30c4}",
                            'ProductionPeriod' => "1989\x{5e74}09\x{6708} \x{ff5e} 1990\x{5e74}07\x{6708}"
                          },
                          {
                            'BodyType' => "\x{30bb}\x{30c0}\x{30f3}",
                            'ImageFrontUrl' => 'http://img.carsensorlab.net/CSphoto/catalog/ME/S003/ME_S003_F001_M002_1.jpg',
                            'EngineCapacity' => "1995\x{ff5e}2597",
                            'Comment' => {},
                            'BodySize' => [
                                          "4450\x{d7}1690\x{d7}1375",
                                          "4430\x{d7}1705\x{d7}1360",
                                          "4450\x{d7}1690\x{d7}1355"
                                        ],
                            'CatalogUrl' => 'http://catalog.carsensorlab.net/mercedes-benz/190_class/f001/m002/',
                            'Model' => "190\x{30af}\x{30e9}\x{30b9}",
                            'ImageInpaneUrl' => 'http://img.carsensorlab.net/CSphoto/catalog/ME/S003/ME_S003_F001_M002_2.jpg',
                            'CatalogMobUrl' => 'http://csmob.jp/catalog/selectGrade.php?br=ME&md=S003&fm=F001&mc=M002',
                            'McKey' => 'TDAWMZAWMTAWMK1F1415',
                            'No' => '2',
                            'Brand' => "\x{30e1}\x{30eb}\x{30bb}\x{30c7}\x{30b9}\x{30fb}\x{30d9}\x{30f3}\x{30c4}",
                            'ProductionPeriod' => "1990\x{5e74}08\x{6708} \x{ff5e} 1991\x{5e74}07\x{6708}"
                          },
                          {
                            'BodyType' => "\x{30bb}\x{30c0}\x{30f3}",
                            'ImageFrontUrl' => 'http://img.carsensorlab.net/CSphoto/catalog/ME/S003/ME_S003_F001_M003_1.jpg',
                            'EngineCapacity' => "1995\x{ff5e}2597",
                            'Comment' => {},
                            'ImageRearUrl' => 'http://img.carsensorlab.net/CSphoto/catalog/ME/S003/ME_S003_F001_M003_2.jpg',
                            'BodySize' => [
                                          "4450\x{d7}1690\x{d7}1375",
                                          "4430\x{d7}1705\x{d7}1360",
                                          "4450\x{d7}1690\x{d7}1355"
                                        ],
                            'CatalogUrl' => 'http://catalog.carsensorlab.net/mercedes-benz/190_class/f001/m003/',
                            'Model' => "190\x{30af}\x{30e9}\x{30b9}",
                            'ImageInpaneUrl' => 'http://img.carsensorlab.net/CSphoto/catalog/ME/S003/ME_S003_F001_M003_3.jpg',
                            'CatalogMobUrl' => 'http://csmob.jp/catalog/selectGrade.php?br=ME&md=S003&fm=F001&mc=M003',
                            'McKey' => 'TDAWMZAWMTAWM01F1015',
                            'No' => '3',
                            'Brand' => "\x{30e1}\x{30eb}\x{30bb}\x{30c7}\x{30b9}\x{30fb}\x{30d9}\x{30f3}\x{30c4}",
                            'ProductionPeriod' => "1991\x{5e74}08\x{6708} \x{ff5e} 1992\x{5e74}09\x{6708}"
                          },
                          {
                            'BodyType' => "\x{30bb}\x{30c0}\x{30f3}",
                            'ImageFrontUrl' => 'http://img.carsensorlab.net/CSphoto/catalog/ME/S003/ME_S003_F001_M004_1.jpg',
                            'EngineCapacity' => "1995\x{ff5e}2597",
                            'Comment' => {},
                            'ImageRearUrl' => 'http://img.carsensorlab.net/CSphoto/catalog/ME/S003/ME_S003_F001_M004_2.jpg',
                            'BodySize' => [
                                          "4450\x{d7}1690\x{d7}1375",
                                          "4430\x{d7}1705\x{d7}1360",
                                          "4450\x{d7}1690\x{d7}1355"
                                        ],
                            'CatalogUrl' => 'http://catalog.carsensorlab.net/mercedes-benz/190_class/f001/m004/',
                            'Model' => "190\x{30af}\x{30e9}\x{30b9}",
                            'ImageInpaneUrl' => 'http://img.carsensorlab.net/CSphoto/catalog/ME/S003/ME_S003_F001_M004_3.jpg',
                            'CatalogMobUrl' => 'http://csmob.jp/catalog/selectGrade.php?br=ME&md=S003&fm=F001&mc=M004',
                            'McKey' => 'TDAWMZAWMTAWNE1F1015',
                            'No' => '4',
                            'Brand' => "\x{30e1}\x{30eb}\x{30bb}\x{30c7}\x{30b9}\x{30fb}\x{30d9}\x{30f3}\x{30c4}",
                            'ProductionPeriod' => "1992\x{5e74}10\x{6708} \x{ff5e} 1993\x{5e74}09\x{6708}"
                          },
                          {
                            'BodyType' => "\x{30cf}\x{30c3}\x{30c1}\x{30d0}\x{30c3}\x{30af}",
                            'ImageFrontUrl' => 'http://img.carsensorlab.net/CSphoto/catalog/ME/S030/ME_S030_F001_M001_1.jpg',
                            'EngineCapacity' => '1598',
                            'Comment' => {},
                            'ImageRearUrl' => 'http://img.carsensorlab.net/CSphoto/catalog/ME/S030/ME_S030_F001_M001_2.jpg',
                            'BodySize' => "3605\x{d7}1720\x{d7}1575",
                            'CatalogUrl' => 'http://catalog.carsensorlab.net/mercedes-benz/a_class/f001/m001/',
                            'Model' => "A\x{30af}\x{30e9}\x{30b9}",
                            'Color' => [
                                       "\x{30a8}\x{30f3}\x{30d0}\x{30fc}\x{30ec}\x{30c3}\x{30c9}",
                                       "\x{8d64}\x{8272}",
                                       "\x{30b9}\x{30ce}\x{30fc}\x{30db}\x{30ef}\x{30a4}\x{30c8}",
                                       "\x{767d}",
                                       "\x{30aa}\x{30fc}\x{30b7}\x{30e3}\x{30f3}\x{30d6}\x{30eb}\x{30fc}",
                                       "\x{9752}\x{8272}",
                                       "\x{30b8}\x{30e3}\x{30f3}\x{30b0}\x{30eb}\x{30b0}\x{30ea}\x{30fc}\x{30f3}",
                                       "\x{7dd1}\x{8272}",
                                       "\x{30e1}\x{30c6}\x{30aa}\x{30b0}\x{30ec}\x{30fc}",
                                       "\x{30b0}\x{30ec}\x{30fc}",
                                       "\x{30e0}\x{30fc}\x{30f3}\x{30e9}\x{30a4}\x{30c8}\x{30a2}\x{30b7}\x{30eb}\x{30d0}\x{30fc}",
                                       "\x{30b7}\x{30eb}\x{30d0}\x{30fc}"
                                     ],
                            'ImageInpaneUrl' => 'http://img.carsensorlab.net/CSphoto/catalog/ME/S030/ME_S030_F001_M001_3.jpg',
                            'CatalogMobUrl' => 'http://csmob.jp/catalog/selectGrade.php?br=ME&md=S030&fm=F001&mc=M001',
                            'McKey' => 'TDAZMDAWMTAWMU1F1011',
                            'No' => '5',
                            'Brand' => "\x{30e1}\x{30eb}\x{30bb}\x{30c7}\x{30b9}\x{30fb}\x{30d9}\x{30f3}\x{30c4}",
                            'ProductionPeriod' => "1998\x{5e74}09\x{6708} \x{ff5e} 1999\x{5e74}07\x{6708}"
                          }
                        ],
          'FirstPosition' => '1',
          'Status' => '200',
          'ResponseCount' => '5',
          'TotalCount' => '251'
        };

一見すると、リファレンスだらけなので、何のことかよくわからないのですが、画像を取り出すだけなら簡単にできます。画像のURLは「ImageFrontUrl」の部分の値に入っていますので、その部分まで1つずつ丁寧に矢印でデリファレンスしていけばいいわけです。

まず、$VAR1を$dataに置き換えて考えます。すぐ後にブレースがありますので、ハッシュです。

$data->{'CatalogCar'}

次に、ブラケットがありますので、配列です。この配列の部分に、車のリストが入っています。0にすれば1台目、1にすれば2台目、2にすれば3台目のデータになります。例えば、1台目のデータが欲しければ以下のようになります。

$data->{'CatalogCar'}->[0]

さらに、ブレースがありますので、またハッシュです。

$data->{'CatalogCar'}->[0]->{'ImageFrontUrl'}

これで、1台目の画像URLが取り出せます。

あとは、HTMLで書き出せば終わりです。ここまでくれば、HTMLさえ分かっていればページを作ることができると思います。

最後のループの部分で、ifを使っているのは、なぜかわかりませんが、何個か画像がないものがあったので、それをスキップするためです。

カーセンサーラボWEBサービスの使い方は、これで大体わかったので、ガリバーやグーなどのアフィリエイトをうまく取り込めば、おもしろいアフィリサイトが作れそうです。

トラックバック(0)

トラックバックURL: http://www.sigmadesign.co.jp/ja/mt-tb.cgi/64

コメントする

月別アーカイブ

最近のコメント

ツイッター

フッター区切り線