SSブログ

python boto を使ってAmazon MWSに問い合わせる [python]


スポンサードリンク
すやねむカモミール
先日、署名まで自分で作ってAmazon MWSを使うスクリプトを作ったが、
やはり、MWSの様々な機能を使うためには
ライブラリのお世話になったほうが便利である

そこで、前回、マニュアルの途中で使うことを諦めたbotoに再挑戦した
かなり手こずったので、自分のメモとして書き留めておく

まず、ハマったのはサーバーの接続先である

デフォルトでは当然USのサーバーに問い合わせるのだが
こちらは日本のサーバーに問い合わせたい

あれこれいじっているうちに
boto.hostという属性を見つけて、それの値がUSのドメインだったので
日本のドメインに書き換えてみたら、日本のサーバーに繋がった

サーバーから答えが返ってきたときには非常に嬉しかったが、
今度はその返ってきたデータの取り出し方がわからない

本来はXML形式の文字列のはずなのだが、botoで表示されるのは
pythonの辞書のようでもあり、そうでないようでもある不思議な形式である

ネット上を探したら、私と同様に「どうやってデータを取り出すんだ?」と
質問している人が何人かいたのだが、回答している人が見当たらない

さんざん探しまわって、やっと見つけたのは、
何と、本家botoのテストプログラムだった
(最初に確認しろよ>自分)

どうりで、質問に対する回答がないわけである
python使いなら、それくらい自分で確認しろということなのだろう

データを取り出すポイントは

_result という属性で、これの後にXMLの開始タグを順番に並べていくと
目的のデータまで辿り着くことができる

そうやって何とか書いたのが以下のスクリプトである
商品の中のlowest offer listing for asin で
商品の出品価格を問い合わせるものである

前回作ったコードと比べると数分の1の長さである
やはり、ライブラリを使うと簡単だ


# -*- coding: utf-8 -*-

from boto.mws import connection

MarketPlaceID = 'A1VC38T7YXB528'
MerchantID = '*********'
AccessKeyID = '*********************'
SecretKey = '**********************************'

conn = connection.MWSConnection(
    aws_access_key_id=AccessKeyID,
    aws_secret_access_key=SecretKey,
    Merchant=MerchantID)

conn.host='mws.amazonservices.jp'

def amazon_mws_boto_lowest_offer_asin(asin_list):
    response = conn.get_lowest_offer_listings_for_asin(MarketplaceId='A1VC38T7YXB528', 
              ASINList=asin_list)
    response2 = response._result[0].Product.LowestOfferListings.LowestOfferListing

    for shuppinsha in response2:
        joutai = shuppinsha.Qualifiers.ItemSubcondition
        land_price = shuppinsha.Price.LandedPrice.Amount
        listing_price = shuppinsha.Price.ListingPrice.Amount
        shipping = shuppinsha.Price.Shipping.Amount
        print "コンディション {0} 合計金額{1}円 商品価格{2}円 送料{3}
                円".format(joutai,land_price,listing_price,shipping)


if __name__ == '__main__':

    asin_list=['B00XVHUFQ8']
    amazon_mws_boto_lowest_offer_asin(asin_list)




このスクリプトの出力結果は以下の通り。
最安値から5人の出品者の出品価格が取得できた

コンディション New 合計金額1100.00円 商品価格843.00円 送料257.00円
コンディション Mint 合計金額1607.00円 商品価格1350.00円 送料257.00円
コンディション Mint 合計金額1607.00円 商品価格1350.00円 送料257.00円
コンディション Mint 合計金額1617.00円 商品価格1360.00円 送料257.00円
コンディション Mint 合計金額1657.00円 商品価格1400.00円 送料257.00円
コンディション Mint 合計金額1696.00円 商品価格1439.00円 送料257.00円




スポンサードリンク



nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

トラックバックの受付は締め切りました

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。