Amazon Web サービスで書籍情報を取得

  登録 ID を取得



日本語ディスカッションボード

かなり前の登録手順とAPIの説明が日本語で丁寧に書かれた PDF

↑だけでもだいたいにおいて使えますが、詳細は http://aws.amazon.com/documentation/ の右下にある
Amazon Associates Web Service から HTMLHelp をダウンロードして使うといいと思います。
↓ItemSearch の SearchIndex の一覧等は必要ですから
( SearchIndex-ItemSearch Parameter Combinations for JP )

2008/02/05 日本語リリースノート




  サービスにリクエストして XML を取得



詳細は pdf にありますが、登録 ID を使用して http の GET コマンドでリクエストした結果を XML で取得します。

以下見易さの為に改行を付加しています( ISBN より書籍情報を取得 )
  
http://webservices.amazon.co.jp/onca/xml
?Service=AWSECommerceService
&SubscriptionId=登録ID
&Operation=ItemLookup
&ItemId=4894712245
&ResponseGroup=Large
  

4894712245 は、ASIN と呼ばれる商品 ID ですが、書籍の場合現在のところ ISBN とみなして良いようです。
但し、いつ変更されるかどうか保証のできない事でもあるそうです。




  MSXML で XML 内のデータを取得

  
Set objXMLHttp = CreateObject("Msxml2.ServerXMLHTTP.3.0" )
Set objXML = CreateObject("Msxml2.DOMDocument.3.0")

' 前述
strRequest = "要求する文字列"

' 要求
Call objXMLHttp.Open( "GET", strRequest, False )
objXMLHttp.Send

' objXMLHttp.responseText は、結果を文字列で取得
bRet = objXML.loadXML( objXMLHttp.responseText )

' Items という名前を持つノードのコレクションを取得
Set objNodeList = objXML.getElementsByTagName("Items")

' objNodeList.Item(0) はコレクションの先頭ノード( ここでは一つしかありません )
' ノード "Items" から見たパス ( XPath ) で目的のノードを指定します ( ここでは複数あるコレクションです )
Set objTarget = objNodeList.Item(0).selectNodes("Item/CustomerReviews/Review/Content")

' コレクションを列挙します
For Each obj In objTarget
	MsgBox( obj.nodeTypedValue )
Next
  



  ASP で書籍データを取得

  
<%
' **********************************************************
' データ読出し
' **********************************************************
Function GetData( )

	if Trim( MyData( "In1002" ) ) = "" then
		OutData = "ISBN を入力してください"
		Exit Function
	end if

	Set objXMLHttp = CreateObject("Msxml2.ServerXMLHTTP.3.0" )
	Set objXML = CreateObject("Msxml2.DOMDocument.3.0")

	' 前述
	strRequest = _
		"http://webservices.amazon.co.jp/onca/xml?" & _
		"Service=AWSECommerceService&" & _
		"SubscriptionId=登録ID&" & _
		"Operation=ItemLookup&" & _
		"ResponseGroup=Large&" & _
		"ItemId=" & MyData( "In1002" )

	' 要求
	Call objXMLHttp.Open( "GET", strRequest, False )
	objXMLHttp.Send

	' objXMLHttp.responseText は、結果を文字列で取得
'	bRet = objXML.loadXML( objXMLHttp.responseText )
	Set objXML = objXMLHttp.responseXML

	' Items という名前を持つノードのコレクションを取得
	Set objNodeList = objXML.getElementsByTagName("Items")

	' objNodeList.Item(0) はコレクションの先頭ノード( ここでは一つしかありません )
	' ノード "Items" から見たパス ( XPath ) で目的のノードを指定します
	' ( ここでは複数あるコレクションです )

	' タイトル
	strXPath = "Item/ItemAttributes/Title"
	Set objTarget = objNodeList.Item(0).selectNodes(strXPath)
	For Each obj In objTarget
		EditQueryData( obj.nodeTypedValue )
	Next

	' 画像
	strXPath = "Item/MediumImage/URL"
	Set objTarget = objNodeList.Item(0).selectNodes(strXPath)
	For Each obj In objTarget
		EditQueryData( _
		"<IMG src=""" & obj.nodeTypedValue & """>" )
	Next

	' 著者( メイン )
	strXPath = "Item/ItemAttributes/Author"
	Set objTarget = objNodeList.Item(0).selectNodes(strXPath)
	For Each obj In objTarget
		EditQueryData( obj.nodeTypedValue )
	Next

	' 著者リスト
	strXPath = "Item/ItemAttributes/Creator"
	Set objTarget = objNodeList.Item(0).selectNodes(strXPath)
	For Each obj In objTarget
		Set objXMLDOMNamedNodeMap = obj.Attributes
		EditQueryData( _
		"【" & objXMLDOMNamedNodeMap.getNamedItem("Role").value & _
		"】 " & obj.nodeTypedValue )
	Next

	' 定価
	strXPath = "Item/ItemAttributes/ListPrice/FormattedPrice"
	Set objTarget = objNodeList.Item(0).selectNodes(strXPath)
	For Each obj In objTarget
		EditQueryData( obj.nodeTypedValue )
	Next

	' ページ数
	strXPath = "Item/ItemAttributes/NumberOfPages"
	Set objTarget = objNodeList.Item(0).selectNodes(strXPath)
	For Each obj In objTarget
		EditQueryData( "【ページ数】 " & obj.nodeTypedValue )
	Next

	' 出版年月
	strXPath = "Item/ItemAttributes/PublicationDate"
	Set objTarget = objNodeList.Item(0).selectNodes(strXPath)
	For Each obj In objTarget
		EditQueryData( "【出版年月】 " & obj.nodeTypedValue )
	Next

	' 出版
	strXPath = "Item/ItemAttributes/Publisher"
	Set objTarget = objNodeList.Item(0).selectNodes(strXPath)
	For Each obj In objTarget
		EditQueryData( "【出版】 " & obj.nodeTypedValue )
	Next

	' コメント
	strXPath = "Item/CustomerReviews/Review/Content"
	Set objTarget = objNodeList.Item(0).selectNodes(strXPath)
	For Each obj In objTarget
		EditQueryData( obj.nodeTypedValue )
	Next

End Function

' **********************************************************
' データの編集
' **********************************************************
Function EditQueryData( strValue )

	OutData = OutData & "<TR>" & vbCrLf
	OutData = OutData & "<TD class=MyCell>"
	OutData = OutData &  strValue & ""
	OutData = OutData & "</TD>" & vbCrLf

	OutData = OutData & "</TR>" & vbCrLf & vbCrLf

End Function
%>
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ