SSブログ
前の10件 | -

アマゾン出品者の在庫数を確認する(その3) [python]

次に以下のスクリプトを走らせて
各出品者の在庫を取得する



出力結果は以下の通り



これをExcelに貼り付けるとこうなる

zaiko_kakunin_excel.jpg

Keepaの仕様で、全ての出品者の在庫数がわかるわけではないのが問題だが、
とりあえずは、これでデータどりをしてみようと思う。

クロームの拡張機能には monosearch など、Keepa より高機能のものもあるので、
将来的には作り直したほうがいいかもしれないが・笑

アマゾン出品者の在庫数を確認する(その2) [python]

まず、Keepaのcrxファイルを作成する。

作成方法はここがわかりやすい。

chromeアドオンのcrxファイルを入手する方法
http://mussyu1204.myhome.cx/wordpress/it/?p=9

作成したcrxファイルをpython スクリプトと同じディレクトリーに保存する。

selenium で、拡張機能のオプションを操作する方法がわからなかったので、
とりあえず、pythonコンソールから対話的に操作することにした。

まず、以下のスクリプトを走らせて、
拡張機能を読み込んだ状態で、クロームを立ち上げ、
keepaのオプションを設定する。




アマゾン出品者の在庫数を確認する(その1) [python]

アマゾン転売をやっていると、各出品者の在庫がどのように変動しているのか知りたいことがある。

例えば、この商品

カントリーマアム1.jpg

見てわかるとおり、自己発送の出品者の価格が安く、
FBAの出品者の価格は高い。

実はこの長登屋という出品者は
自社製品も多数出品している製造メーカーで、

他はおおむね転売屋である。

永登屋から送料無料で買って、FBAで出品すれば薄利でも利益がでるが、
ここで問題になるのは

「高値のFBAから売れているのか???」である。

アマゾンランキングは、まぁまぁ良いので
商品が売れているのは間違いないのだが、

安値の永登屋からだけ売れているのであれば不良在庫になってしまう。

そこで、ツールを使って在庫状況を確認することになる。

例えば、google chrome の拡張機能であるKeepa

keepa1.jpg

これのオプションで、
Display product's stock quantity for some merchants o offer pages
を「はい」にすると

keepa2.jpg

各出品者の在庫数が表示される。

keepa3.jpg

これを毎日記録していけば、実際に高値の出品者から売れているか確認できる。

ただ、毎日、手作業で記録するのは大変なので、
python+seleniumで、多少、省力化することにする。

python boto を使ってAmazon MWSに問い合わせる(その4) [python]

Amazon MWSの操作の中で、今度は価格改定である

他の出品者の価格がわかり、自身の価格がわかり
価格改定ができれば、簡単な自動価格改定ツールを作成することができる

まず、そのためには、botoで価格を改定できるようにしなければならない

もっとも、botoはMWS用のライブラリなので、そのあたりも簡単にできるようになっていて
submit_feedという属性が用意されている

これに必要事項を記入して起動するとアマゾンにフィードが送られる

フィードにはプレーンテキストとXMLファイルの2つの形式があり
アマゾンはXMLを推奨しているようだが、プレーンテキストの方が簡単そうだ

結局、やるべき作業は手動での作業手順とまったく同じである

手動でファイルをアップロードするには、

まず、アマゾンが用意したタブ区切りファイルをダウンロードして
これにSKUと価格を入力する

アマゾンのセラーセントラルにある「アップロードによる一括商品登録」というページの
「価格と数量変更ファイル(本・ミュージック・ビデオ・DVD)」という項目を選択し
ここから先のファイルをアップロードすると、セラーセントラルでの価格が改定される

改定が行われたかどうかは、すぐ下に表示されている
「在庫ファイルのアップロードステイタス」を更新すると
エラーか成功かが表示される

それとまったく同じことを boto で行うわけである

フィードの形式などはよくわからなかったが、
とりあえず、このときにアップロードするタブ区切りファイルをテキストエディタで開いて
そのままフィードとして送ってみたら、価格が改定された

そのスクリプトは以下の通り

しかし、フィードの部分が非常に見苦しい
もうちょっと何とかしないといけないだろう


# -*- 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_kakaku_kaitei(feed_content):
    response = conn.submit_feed(
        FeedType='_POST_FLAT_FILE_PRICEANDQUANTITYONLY_UPDATE_DATA_',
        PurgeAndReplace=False,
        MarketplaceIdList=[MarketPlaceID],
        content_type='text/tab-separated-values',
        FeedContent= feed_content
    )
    return response

if __name__ == '__main__':

    feed_content = """TemplateType=PriceInventory	Version=2011.0928	
この行はAmazonが使用しますので変更や削除しないでください。
商品管理番号	販売価格	在庫数	販売価格の下限設定	販売価格の上限設定
sku	price	quantity	minimum-seller-allowed-price	maximum-seller-allowed-price
T2-JZ6C-72PN	1370
"""
    res = amazon_mws_boto_kakaku_kaitei(feed_content)
    print res



出力結果は以下の通り


SubmitFeedResponse{u'xmlns': u'http://mws.amazonaws.com/doc/2009-01-01/'}(SubmitFeedResult: SubmitFeedResult{}(FeedSubmissionInfo: FeedSubmissio..................

この情報をもとに問合せたら、フィードがうまく処理されたかどうかわかるのだが、
要は価格が改定されていればいいので、エラーが発生しなければ見なくてもかまわない

接続先が、amazonaws.comになっているのがちょっと気になるが、
これも、あまり深く考えないことにする

python boto を使ってAmazon MWSに問い合わせる(その3) [python]

Amazon MWSの操作の中で、今度は自分自身の出品価格の取得である

botoの使い方もわかってきたし、問い合わせは
GetMyPriceSku で、簡単にできるだろうと思ったのだが、
botoのプロパティに get_my_price_for_sku がない

そんなはずはないだろう、と、本家botoを見に行ったら
ちゃんと、get_my_price_for_sku について解説してある

もしかして、botoのバージョンが違うのかと思い
python コンソールから

import boto
boto.Version 

と入力すると、現在インストールされているbotoのバージョンは

'2.20.1'

現行は 2.38.0

どうやら、これが原因のようだ

私の環境は ubuntu 14.04 python 2.7なのだが
ubuntuでお手軽インストールをすると
古いバージョンがインストールされるのはよくあることである

仕方がないので、本家のインストール方法を見ながら最新版をインストールした

再度、python を立ち上げてみると、無事に get_my_price_for_sku が現れた

道具さえ揃えば後は前回と同じ手順でサクッと作ることができた
試してみると、存在しないskuを入力するとエラーが返されるので
エラーチェックをつけた

また、在庫数が0のskuを入力すると、エラーにはならないが、
設定価格のデータが返ってこないようだ


# -*- 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_get_my_price_for_sku(sku_list):
    response = conn.get_my_price_for_sku(MarketplaceId='A1VC38T7YXB528', 
                 SellerSKUList=sku_list)
    for shohin in response._result:
        if shohin.Error == None:
            asin_code = shohin.Product.Identifiers.MarketplaceASIN.ASIN
            print "-----------------------------------"
            print "ASIN コード {0}".format(asin_code)
            response2 = shohin.Product.Offers.Offer
            for item in response2:
                sku = item.SellerSKU
                joutai = item.ItemSubCondition
                goukei = item.BuyingPrice.LandedPrice
                kakaku = item.BuyingPrice.ListingPrice
                souryo = item.BuyingPrice.Shipping
                print "SKU {0} コンディション {1} 合計金額{2}円 商品価格{3}円
                                 送料{4}円".format(sku,joutai,goukei,kakaku,souryo)

if __name__ == '__main__':

    sku_list=['7A-IWFP-TEJR','58-0UFT-DM0M','AAAAAAAAAAAA']
    amazon_mws_boto_get_my_price_for_sku(sku_list)



sku_listにある1番目のskuは在庫のあるもので、2番目は在庫なし、3番目はダミーである
出力結果は以下の通り


-----------------------------------
ASIN コード B00XVHUFQ8
SKU 7A-IWFP-TEJR コンディション Mint 合計金額1607.00円 商品価格1350.00円 送料257.00円
-----------------------------------
ASIN コード B00YU3UQVQ

python boto を使ってAmazon MWSに問い合わせる(その2) [python]

先日Lowest Offer Listings for ASIN に問い合わせるスクリプトは、
複数のasinを一括で問い合わせるのに対応していなかったので、
少し、スクリプトを変更して、対応させた

同時にASINも取得して表示できるようにした
ASINは先頭行に一回だけ表示させている

変更したスクリプトは以下の通り


# -*- 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)
    for shohin in response._result:
        asin_code = shohin.Product.Identifiers.MarketplaceASIN.ASIN
        print "-----------------------------------"
        print "ASIN コード {0}".format(asin_code)
        response2 = shohin.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 = ['B00XU0UETY','B00YVCP580','B00XVHUFQ8']
    amazon_mws_boto_lowest_offer_asin(asin_list)


出力結果はこのようになる

-----------------------------------
ASIN コード B00XU0UETY
コンディション Mint 合計金額1632.00円 商品価格1375.00円 送料257.00円
コンディション Mint 合計金額1633.00円 商品価格1376.00円 送料257.00円
コンディション Mint 合計金額1634.00円 商品価格1377.00円 送料257.00円
コンディション Mint 合計金額1637.00円 商品価格1380.00円 送料257.00円
コンディション Mint 合計金額1857.00円 商品価格1600.00円 送料257.00円
-----------------------------------
ASIN コード B00YVCP580
コンディション Mint 合計金額1027.00円 商品価格770.00円 送料257.00円
コンディション Mint 合計金額1032.00円 商品価格775.00円 送料257.00円
コンディション Mint 合計金額1062.00円 商品価格805.00円 送料257.00円
コンディション Mint 合計金額1086.00円 商品価格829.00円 送料257.00円
コンディション Mint 合計金額1087.00円 商品価格830.00円 送料257.00円
コンディション Mint 合計金額1400.00円 商品価格1400.00円 送料0.00円
コンディション VeryGood 合計金額1437.00円 商品価格1180.00円 送料257.00円
コンディション Mint 合計金額1657.00円 商品価格1400.00円 送料257.00円
-----------------------------------
ASIN コード B00XVHUFQ8
コンディション Mint 合計金額1047.00円 商品価格790.00円 送料257.00円
コンディション New 合計金額1100.00円 商品価格843.00円 送料257.00円
コンディション Mint 合計金額1600.00円 商品価格1600.00円 送料0.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円
コンディション Mint 合計金額1850.00円 商品価格1850.00円 送料0.00円


次は、自分自身の出品価格を取得するスクリプトを作成する予定である

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円


amazon Product Advertising APIでASINをJANに [python]

先日、amazon MWS で ASINをJANに変換しようとして
うまくいかなかったと書いたが、

それで、結局、どうしたかというと
昔からある amazon Product Advertising APIを使って変換した

これを使うためのスクリプトは、何年か前に書いたのだが
仕様が変わっているかと思い、再度、参考サイト

AjaxTower
http://www.ajaxtower.jp/

を見に行ったが、特に更新はされていなかった

アマゾンが提供している参考ツール Signed Requests Helper
http://associates-amazon.s3.amazonaws.com/signed-requests/helper/index.html
を見ると、AjaxTowerのものとバージョンが違うのだが
それは数年前にスクリプトを書いたときにも違っていた

以前書いたスクリプトも、一応動いたのだが、
ついでに商品名や定価なども取得できるようにしたかったので
全面的に書き直すことにした

まず、ネットでライブラリを探す。

以前は python-amazon-product-api を使ったのだが
bottlennose というのがあったので、これを使ってみる

ここを参考にした
http://d.hatena.ne.jp/yuheiomori0718/20120416/1334583174

あと、以前スクリプトを書いたときには一度の問合せで複数のASINが扱えるとは知らなかったので
毎回、一個のASINしか処理できず、処理に時間がかかっていたが、

MWSが一度で10個処理できたので、もしかしたら amazon Product Advertising API も
できるかもしれないと思い、ネットで情報を拾うと、
やはり、できるようなので、今回は、10個ずつ問い合わせるようにした

もっとも、今回、AjaxTowerを再度見なおしたら、わざわざ項目まで設けて説明してあった

複数のIDをまとめて検索
http://www.ajaxtower.jp/ecs/itemlookup/index3.html

単なる見落としである

と、いうことで、以下のようなスクリプトを作成した。

やはり、ライブラリをそのまま使えるのは簡単で良い


# -*- coding: utf-8 -*-
from lxml import etree
import codecs
import sys
import re
import time
from bottlenose import api

reload(sys)
sys.setdefaultencoding("utf-8")

f1 = open("asin_list.txt")
lines = f1.readlines()
f1.close()


asin_list = []
for item in lines:
    if item != "":
        asin_list.append(item.decode('utf-8').strip())
if "" in asin_list:
    asin_list.remove("")

AMAZON_ACCESS_KEY_ID='************'
AMAZON_SECRET_KEY='********************************'
AMAZON_ASSOC_TAG='********-22'

amazon = api.Amazon(AMAZON_ACCESS_KEY_ID, AMAZON_SECRET_KEY, AMAZON_ASSOC_TAG, Region="JP")

while len(asin_list) > 0:
    query = ""
    if len(asin_list) >10:
        limit = 10
    else:
        limit = len(asin_list)

    for i in range(limit):
        query = query+asin_list.pop(0)+","
    query.strip(",")
    res = amazon.ItemLookup(ItemId=query, ResponseGroup='Large')

    root = etree.fromstring(res, etree.HTMLParser())

    items = root.xpath('//item')

    for item in items:
        asin_code = item.find('asin').text

        jan = ""
        jan = item.find('itemattributes/ean')
        if jan != None:
            jan = jan.text
        price =""
        price = item.find('offersummary/lowestnewprice/formattedprice')
        if price != None:
            price = price.text.replace('¥',"").replace(",","")
        title = item.find('itemattributes/title').text
        print ("{0}|{1}|{2}|{3}".format(asin_code,jan,price,title))

    time.sleep(6)



amazon mws でASINをJANに変換する [python]

転売の商品リサーチの都合で、
数千個のASINをJANに変換することが必要になった

かなり以前に amazon Product Advertising API を使って
ASINからJANを取得する python スクリプトを書いたのだが、

最近はMWSの方が主流のようで、私が契約している
アマゾン関係のツールなどでもMWSを利用しているものが多い

まぁ、モノレートからデータを引っ張ってきても良いのだが
あまり頻繁にアクセスするとブロックされるし、

同様のツールである せどりRankはデータのないものが
大量にあって、全然使い物にならない

MWSについては、以前から興味はあったのだが、
利用することもなかったので、

これを機会にMWS+pythonでデータを取得できるように
ネットで情報を探してみた

まず、結論を先に書くと、MWSはJANコードの取得に
向いていないということがわかった

あるいは、私が問合せ先を間違えているだけかもしれないが、
MWSの商品関連のオプションはあまり多くないし

GetMatchingProduct で問合せて
戻り値の中の itemattributes の partnumber ぐらいしかないと思うのだが、
JANコード(EAN)が入っていないものが多く、まるで使えないのである

では、アマゾンにそれらの商品のASIN-JANのペアにデータがないかというと
amazon Product Advertising API を使って問合せると全部でてくる

まぁ、出品関係など、amazon Product Advertising API では
できないことがMWSではできるので、

MWSは amazon Product Advertising API の上位版という訳ではなく
それぞれの機能を使い分けるようになっているのかもしれない

と、いうことで表題の機能はないのだが、自分のメモとして
苦労した部分を少し書いておく

まず、pythonということで、ネットを検索するとbotoというライブラリがヒットしたが、
これはアマゾンのストレージなども含む総合ザービスに対応したライブラリでるため
規模が大きすぎて、マニュアルの途中で挫折した

次に、amazon-mws-python
https://bitbucket.org/richardpenman/amazon-mws-python/src
をインストールして試したが、認証がうまくいかない

そもそもドメインには日本のドメインを指定するはずなのだが、
このライブラリにはドメインを指定する部分がない

もしかして、mws.amazonservices.comに行っているから
認証が通らないのではないだろうか?

そうだとすると、ライブラリを使わずにsignatureも
自分で生成するようなスクリプトを書く必要が有ると思って
ネットを探したら見つかった

http://stackoverflow.com/questions/25553874/amazon-api-mws-signaturedoesnotmatch

正確には、自分で全部やろうとして、うまくいっていない人の質問なのだが、
このソースと下の回答を合わせて、少し変更しただけで認証が通った

最終的に書いたスクリプトはこのようなものである
ファイルからASINのリストを読み込んで処理するようになっており

一分間に10回、一回の問合せで10個処理できるので
一分間に100個のASINが処理できる

これで、データがちゃんと取得できたら良かったのだが、
まぁ、ここまでできたら、後は出品関係とか
別のことにも応用できるだろうから、また、何かの役に立つこともあるだろう



asin2jan.py


# -*- coding: utf_8 -*-

import sys, os, base64, datetime, hashlib, hmac, urllib,time
from lxml import etree
from time import gmtime, strftime
from requests import request
import xml.etree.ElementTree as ET

def get_timestamp():
    """Return correctly formatted timestamp"""
    return strftime("%Y-%m-%dT%H:%M:%SZ", gmtime())

def calc_signature(method, domain, URI, request_description, key):
    """Calculate signature to send with request"""
    sig_data = method + '\n' + \
        domain.lower() + '\n' + \
        URI + '\n' + \
        request_description

    hmac_obj = hmac.new(key, sig_data, hashlib.sha256)
    digest = hmac_obj.digest()

    return  urllib.quote(base64.b64encode(digest), safe='-_+=/.~')

SECRET_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
AWS_ACCESS_KEY = 'xxxxxxxxxxxxxx'
SELLER_ID = 'xxxxxxxxxx'
MARKETPLACE_ID = 'A1VC38T7YXB528'

Action = 'GetMatchingProduct'
URI = '/Products/2011-10-01'
domain = 'mws.amazonservices.jp'
SignatureMethod = 'HmacSHA256'
SignatureVersion = '2'

Version = '2011-10-01'
proto = 'https://'
method = 'POST'

f1 = open("asin_list.txt")
lines = f1.readlines()
f1.close()


asin_list = []
for item in lines:
    if item != "":
        asin_list.append(item.decode('utf-8').strip())

while len(asin_list) > 0:
    Timestamp = get_timestamp()
    payload = {
        'AWSAccessKeyId': AWS_ACCESS_KEY,
        'Action': Action,
        'SellerId': SELLER_ID,
        'SignatureVersion': SignatureVersion,
        'Timestamp': Timestamp,
        'Version': Version,
        'SignatureMethod': SignatureMethod,
        'MarketplaceId': MARKETPLACE_ID
    }
    if len(asin_list) > 10:
        limit = 10
    else:
        limit = len(asin_list)
    for i in range(limit):
        index = "ASINList.ASIN."+str(i+1)
        payload[index] = asin_list.pop(0)

    request_description = '&'.join(['%s=%s' % (k, urllib.quote(payload[k], safe='-_.~').encode('utf-8')) for k in sorted(payload)])

    sig = calc_signature(method, domain, URI, request_description, SECRET_KEY)

    url = '%s%s?%s&Signature=%s' % \
        (proto+domain, URI, request_description, urllib.quote(sig))

    headers = {
        'Host': domain,
        'Content-Type': 'text/xml',
        'x-amazon-user-agent': 'python-requests/1.2.0 (Language=Python)'
    }

    response = request(method, url, headers=headers)

    root = etree.fromstring(response.content, etree.HTMLParser())
    items = root.xpath('//product')
    for item in items:
        item_asin = item.find('identifiers/marketplaceasin/asin').text
        title = item.find('attributesets/itemattributes/title').text
        jan = item.find('attributesets/itemattributes/partnumber')
        if jan != None:
            jan = jan.text
        else:
            jan = ""
        print item_asin+"|"+jan+"|"+title


    time.sleep(6)

タグ:Python

冷凍の大根 [料理]

近所のスーパーで冷凍の大根を売っていた

直径5センチぐらいの大根を厚さ2センチ程度に輪切りにしたものが
12−3個ぐらい入って一袋になっている

生の大根を一本買うと、全部使い切るのがなかなか大変で
2日連続大根おろしと何かのメニューになったりするし

食べない間、冷蔵庫で保存するにしても、
そんなに何日も保存できるものではない

冷凍の大根なら、使いたいときに
使いたい量だけ解凍するばよいので
便利そうである

ただ、上述のように、既に輪切りになっているので
大根おろしを作るのは無理である

とりあえず、柔らかく蒸したような状態にしたいので、
生の大根と同様に、凍ったままの大根をラップで包んで
電子レンジで加熱してみた

700Wで1分30秒加熱すると、
解凍されて柔らかくはなるのだが
シャキシャキした生の状態である

加熱時間を増やせばいいかと
3分加熱してみたが、
これは、単に水分が抜けただけだった

ネットで大根の下茹でで探すと
生の大根を輪切りにして、大根の高さの半分ほど水を入れ
電子レンジで加熱する方法があった

そこで、凍ったままの大根を容器に入れ、
大根の高さぐらいまで水を入れ
ラップをかぶせて、電子レンジで加熱してみた

まず、5分加熱する
柔らかくはなっているが、竹串が通るほどではない

7分加熱
少し竹串が通るようになったが、まだ不十分

様子を見ながら加熱を続けて
11分加熱したところで、ようやく竹串が軽く通る状態になった

たった、1切れを調理するのに10分以上かかったが、
上に書いたネットの情報にも大根2分の1本で10分加熱とあったし、
凍った状態から加熱を開始しているので、
それくらいは時間がかかるのだろう

冷凍食品の良いところは、食べたいときに食べたい量を
手軽に調理できるところだが、

同じ分量の生の大根ならラップに包んで
2分も加熱すればすむところを

10分以上も電子レンジで加熱するというのは
ちょっといただけない

まぁ、冷凍大根は電子レンジ調理には向かないということなのだろう


前の10件 | -

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