Amazon アソシエイトで、ウェブサービス (A2S / 旧AWS) を REST で利用する方法 (A2S: Amazon Associates Web Services)

REST とは、REpresentational State Transfer の略で、クライアントが HTTP の GET または POST でリクエストした内容を、サーバ通常の HTML ページの代わりに XML ドキュメントで返すもののことである。つまりは SOAP を使わなくてもサーバからクライアントがデータを受信するようなもので、従来の HTTP の Request - Response のスキームは何ひとつ変わらない。なので決して難しいことはない。 アマゾン・アソシエイトで、商品の画像だけ表示する方法は述べた通りだが、現在の価格を表示したり、「24時間以内に発送可能」 などの在庫状況を表示したりするにはどうしたらいいのだろう?たとえば、以下のように表示したい場合である。
  • 以下は、TOEIC スターターキットで紹介している本の一部(ちなみに、以下の本に紹介されている試験勉強方法はどんな試験にも役に立つ。内容はほとんど精神論であるが、私はこの本があったから TOEIC 920 に達することができたと言っても過言ではない)。 試験に受かる超効率勉強法 試験に受かる超効率勉強法井藤 公量 日本実業出版社 2002-01Amazonで詳しく見る
必要な情報・手順としては以下の通りである。
  1. アマゾン・アソシエイトの ID を取得する。
  2. Amazon Web サービスの Access Key ID を取得する。
  3. XSLT を用意する。
  4. 商品リンクの URL を作成する。
  5. リンクを自分のサイトに貼り付ける。
まず、XSLT を作成し、自分のサイトのどこか(たとえば、https://perltips.twinkle.cc/amazon_price.xsl)に保存しておく。
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="https://www.w3.org/1999/XSL/Transform" xmlns:aws="https://webservices.amazon.com/AWSECommerceService/2006-03-08" exclude-result-prefixes="aws" version="1.0">
  <xsl:output method="html" encoding="utf-8"/>
<xsl:template match="/">
<xsl:apply-templates select="aws:ItemLookupResponse/aws:Items/aws:Item/aws:Offers/aws:Offer/aws:OfferListing"/>
</xsl:template>

<xsl:template match="aws:OfferListing">

<xsl:variable name="ourprice" select="aws:Price/aws:FormattedPrice"/>
<xsl:variable name="availavility" select="aws:Availability"/>
<html lang="ja">
<head>
</head>
<body bgcolor="#FFFFFF">
<font size="-1" color="#990000">
<b><xsl:value-of select="$ourprice"/></b><br/>
</font>
<font size="-1" color="#333333">
<xsl:value-of select="$availavility"/>
</font>
<br/>
</body>
</html>
</xsl:template>

</xsl:stylesheet>
あとは、以下の URL からアクセスするだけである。
<table  border="0" cellpadding="5"><tr><td valign="top">
<a
href="https://www.amazon.co.jp/exec/obidos/ASIN/<font color="blue">4534033427</font>/<font color="blue">twinklexxx-22</font>/ref=nosim/"
target="_blank">
<img src="https://images.amazon.com/images/P/<font color="blue">4534033427</font>.09._SCMZZZZZZZ_.jpg"
border="0"
alt="4534033427" /></a></td>
<td valign="top"><font size="-1">
<a
href="https://www.amazon.co.jp/exec/obidos/ASIN/<font color="blue">4534033427</font>/<font color="blue">twinklexxx-22</font>/ref=nosim/"
target="_blank"><font color="blue">試験に受かる超効率勉強法</font></a><br />
<font color="blue">井藤 公量</font><br /><br />
<font color="blue">日本実業出版社 2002-01</font><br />
<iframe scrolling="no"
frameborder="0"
width="200" height="40"
hspace="0"
vspace="0"
marginheight="0"
marginwidth="0"
src="https://xml-jp.amznxslt.com/onca/xml?Service=AWSECommerceService&AWSAccessKeyId=<font color="blue"> 152ZP71KPB47XM09CS02</font>&AssociateTag=<font color="blue">twinklexxx-22</font>&Operation=ItemLookup&IdType=ASIN&ContentType=text/html&Version=2006-03-08&Page=1&ResponseGroup=Offers&ItemId=<font color="blue">4534033427</font>&Style=<font color="blue">https://perltips.twinkle.cc/amazon_price.xsl</font>"></iframe><br /><a href="https://www.amazon.co.jp/exec/obidos/ASIN/<font color="blue">4534033427</font>/<font color="blue">twinklexxx-22</font>/ref=nosim/"
target="_blank">Amazonで詳しく見る</a>
</font><font size="-2"></font>
</td></tr></table>
この中で、REST として AWS (Amazon Web Services) に渡す重要なパラメータは以下の通り。青字は、自分の環境に合わせて変更する部分である。
  • Operation=ItemLookup
  • IdType=ASIN
  • ContentType=text/html
  • Version=2006-03-08
  • Page=1
  • ResponseGroup=Offers
  • AWSAccessKeyId=152ZP71KPB47XM09CS02
  • AssociateTag=twinklexxx-22
  • Style=https://perltips.twinkle.cc/amazon_price.xsl
  • ItemId=4534033427
トラックバック URL: https://perltips.twinkle.cc/trackback/101
Amazon アソシエイトで、商品画像だけ表示する方法
Trackback from Perl Tips: ネットサーフィン(死語?)をしていたある日、アマゾンアソシエイトにリンクしてい......
Posted by Perl Tips (未認証ユーザ) on 2006/05/31(水) 00:58
Amazon アソシエイトで、テンプレート (XSLT) を使って商品情報や画像を表示する方法
Trackback from Perl Tips: 先のエントリーで、「Amazon アソシエイトで、商品画像だけ表示する方法」 ......
Posted by Perl Tips (未認証ユーザ) on 2006/06/02(金) 03:15