ランニング日誌サイトを運営しています。
ジョグナビ
節約テクニック
No1:家族(妻、子供など)名義で優待銘柄を買おう
No2:還元率の高いクレジットカードは
No3:エンジンオイルはエコオイルにしよう
No4:エコタイヤは性能と値段と相談
パンつくり
No1:小麦粉の配合
No2:日清カメリヤはどうなの
ジョグナビ
節約テクニック
No1:家族(妻、子供など)名義で優待銘柄を買おう
No2:還元率の高いクレジットカードは
No3:エンジンオイルはエコオイルにしよう
No4:エコタイヤは性能と値段と相談
パンつくり
No1:小麦粉の配合
No2:日清カメリヤはどうなの
Google App Engine for Javaでメール応答型せどりツールを作る。その4 [仕事]
AmazonのAPIの使い方を書いたページはいかにあった。
サンプルソースをダウンロードしてくる。
そして、適当なパッケージ名に変えてやり。
http://d.hatena.ne.jp/xfan/20101128/1290920257
Base64クラスがないという警告がでるので、import文を書き換える。
「import com.google.appengine.repackaged.com.google.common.util.Base64;」
ここも書き換える。
Base64 encoder = new Base64();
signature = new String(encoder.encode(rawHmac));
→
signature = new String(Base64.encode(rawHmac));
signature = signature.trim();
そして、ここに自身で取得したコードを入れる
AWS_ACCESS_KEY_ID
AWS_SECRET_KEY
こいつを日本用のURLに変える。
ENDPOINT
http://blog.kcg.ne.jp/blog/leeway/10095
そして、パラメータの部分をこのように書き換えてISBNに対応させてみたが・・・
params.put("Service", "AWSECommerceService");
params.put("Version", "2009-03-31");
params.put("Operation", "ItemSearch");
params.put("IdType", "ISBN");
params.put("ItemId", itemId);
params.put("ResponseGroup", "OfferSummary");
以下のようなエラーが帰ってきた。
とりあえずAPI自体は呼べているので、あとはパラメータの調整ですなぁ。
-
-
リクエストには、使用できないパラメータの組み合わせが含まれています。SearchIndexが${restricted-value}である場合、 MerchantIdは使えません。
-
次のパラメータのうち、最低1個がリクエストに含まれている必要があります:'Keywords','Title','Power','BrowseNode','Artist','Author','Actor','Director','AudienceRating','Manufacturer','MusicLabel','Composer','Publisher','Brand','Conductor','Orchestra','TextStream','Cuisine','City','Neighborhood'
で、このようにやりましたら中古価格がとることができました。
params.put("Service", "AWSECommerceService");
params.put("Version", "2009-03-31");
params.put("Operation", "ItemLookup");
params.put("ItemId", itemId);
params.put("MinimumPrice", "1");
params.put("ResponseGroup", "OfferSummary");
返却されるXMLから価格と件数を取得するところ。
XPath表現でとる方法がスマートかと思い。jaxenなるライブラリをゲット。
http://jaxen.codehaus.org/
中古価格と件数のXPath表現は
/itemlookupresponse/items/item/offersummary/lowestusedprice/formattedprice
/itemlookupresponse/items/item/offersummary/totalused
であるからして、こんな感じにコーディングしたのであります。
XPath xpath = new Dom4jXPath("/itemlookupresponse/items/item/offersummary/lowestusedprice/formattedprice");
List results = xpath.selectNodes(doc);
if (results.size() > 0){
Node node = (Node)(results.get(0));
result.append("price=");
result.append(node.getNodeValue());
result.append(",");
}
他のXPathで値をとりたいのという人
AmazonAPIに投げるURLをFireBugというアドインを入れたFireFoxブラウザで開いて
みてください。サイトが開いたらFirebugを起動してあげて、とりたいXMLの要素
のところにカーソルを合わせて右クリックしますと。ご丁寧にもXPathコピーというメニューが
あるんです。そうするとXPATHがすぐにわかるわけ。
うーん。URLからうまくXMLにできていないようです。。
サンプルソースをダウンロードしてくる。
そして、適当なパッケージ名に変えてやり。
http://d.hatena.ne.jp/xfan/20101128/1290920257
Base64クラスがないという警告がでるので、import文を書き換える。
「import com.google.appengine.repackaged.com.google.common.util.Base64;」
ここも書き換える。
Base64 encoder = new Base64();
signature = new String(encoder.encode(rawHmac));
→
signature = new String(Base64.encode(rawHmac));
signature = signature.trim();
そして、ここに自身で取得したコードを入れる
AWS_ACCESS_KEY_ID
AWS_SECRET_KEY
こいつを日本用のURLに変える。
ENDPOINT
http://blog.kcg.ne.jp/blog/leeway/10095
そして、パラメータの部分をこのように書き換えてISBNに対応させてみたが・・・
params.put("Service", "AWSECommerceService");
params.put("Version", "2009-03-31");
params.put("Operation", "ItemSearch");
params.put("IdType", "ISBN");
params.put("ItemId", itemId);
params.put("ResponseGroup", "OfferSummary");
以下のようなエラーが帰ってきた。
とりあえずAPI自体は呼べているので、あとはパラメータの調整ですなぁ。
-
AWS.RestrictedParameterValueCombination
AWS.MinimumParameterRequirement
で、このようにやりましたら中古価格がとることができました。
params.put("Service", "AWSECommerceService");
params.put("Version", "2009-03-31");
params.put("Operation", "ItemLookup");
params.put("ItemId", itemId);
params.put("MinimumPrice", "1");
params.put("ResponseGroup", "OfferSummary");
返却されるXMLから価格と件数を取得するところ。
XPath表現でとる方法がスマートかと思い。jaxenなるライブラリをゲット。
http://jaxen.codehaus.org/
中古価格と件数のXPath表現は
/itemlookupresponse/items/item/offersummary/lowestusedprice/formattedprice
/itemlookupresponse/items/item/offersummary/totalused
であるからして、こんな感じにコーディングしたのであります。
XPath xpath = new Dom4jXPath("/itemlookupresponse/items/item/offersummary/lowestusedprice/formattedprice");
List results = xpath.selectNodes(doc);
if (results.size() > 0){
Node node = (Node)(results.get(0));
result.append("price=");
result.append(node.getNodeValue());
result.append(",");
}
他のXPathで値をとりたいのという人
AmazonAPIに投げるURLをFireBugというアドインを入れたFireFoxブラウザで開いて
みてください。サイトが開いたらFirebugを起動してあげて、とりたいXMLの要素
のところにカーソルを合わせて右クリックしますと。ご丁寧にもXPathコピーというメニューが
あるんです。そうするとXPATHがすぐにわかるわけ。
うーん。URLからうまくXMLにできていないようです。。
作ればわかる!Google App Engine for Javaプログラミング
- 作者: 中垣 健志
- 出版社/メーカー: 翔泳社
- 発売日: 2011/04/23
- メディア: 大型本
コメント 0