/*********************************************************** hspinet.dllとXMLパーサー(MSXML)でAmazon Web Service(AWS)を利用する 【2006/1/4 更新】 ***********************************************************/ /**********************************/ /* ヘッダファイル、定数マクロなど */ /**********************************/ #include "hspinet.as" #define AWS40_BASE_URL "http://webservices.amazon.co.jp/onca/" #define AWS40_FILENAME "xml" #define AWS40_PRM_SERVICE "?Service=AWSECommerceService" #define AWS40_PRM_AWS_ID "&AWSAccessKeyId=" #define AWS_ID "" // Access Key ID または Subscription ID を指定する #define AWS40_PRM_OP "&Operation=ItemSearch" #define AWS40_PRM_INDEX "&SearchIndex=Books" #define AWS40_PRM_RESGROUP "&ResponseGroup=Small" #define AWS40_PRM_SORT "&Sort=salesrank" #define AWS40_PRM_BNODE "&BrowseNode=492352" // 492352 = 本 > ジャンル別 > コンピュータ・インターネット > プログラミング #define DL_NAME "res.xml" #define TAGNAME_URL "DetailPageURL" #define TAGNAME_TITLE "Title" #define HTML_TITLE_1 "Amazon売り上げランキング : " #define HTML_TITLE_2 "本 > ジャンル別 > コンピュータ・インターネット > プログラミング" #define HTML_NAME "ranking.html" /**********/ /* 前処理 */ /**********/ netinit if stat { dialog "ネットワーク接続ができない状態です。スクリプトを終了します。",1,"エラー" end } filename = AWS40_FILENAME filename += AWS40_PRM_SERVICE filename += AWS40_PRM_AWS_ID + AWS_ID filename += AWS40_PRM_OP filename += AWS40_PRM_INDEX filename += AWS40_PRM_RESGROUP filename += AWS40_PRM_SORT filename += AWS40_PRM_BNODE /**********************************************************/ /* hspinet.dllでAWSにアクセス、レスポンスをファイルに保存 */ /**********************************************************/ neturl AWS40_BASE_URL netdlname DL_NAME mes "データを取得中です..." netload filename ; exec DL_NAME,16 // ダウンロードしたファイルを拡張子"xml"に関連付けられたアプリで表示 /***********************************/ /* MSXMLを利用してレスポンスを解析 */ /***********************************/ /* 保存したファイルを読み込む */ newcom oDom,"Microsoft.XMLDOM" oDom("async") = "FALSE" oDom->"load" DL_NAME /* Itemごとの商品情報を取得 */ comres elmnts_url oDom->"getElementsByTagName" TAGNAME_URL comres elmnts_title oDom->"getElementsByTagName" TAGNAME_TITLE repeat elmnts_url("length") // 商品数 node = elmnts_title("item",cnt) node2 = node("firstChild") titles(cnt) = ""+node2("nodeValue") ; mes titles(cnt) node = elmnts_url("item",cnt) node2 = node("firstChild") usls(cnt) = ""+node2("nodeValue") ; mes usls(cnt) loop /********************************/ /* 商品情報からHTMLデータを生成 */ /********************************/ html = "" html += ""+HTML_TITLE_1+HTML_TITLE_2+"" html += "" html += "" repeat length(titles) rank = cnt+1 html += ""+rank+"位: "+titles(cnt)+"
" loop html += "" notesel html notesave HTML_NAME exec HTML_NAME,16 // 保存したファイルを拡張子"html"に関連付けられたアプリで表示 end