経済的自由を目指すmockが送る株日記。 元理系大学院生の株日記

タイトル画像

スポンサーサイト

--.--.--(--:--)

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
参加ランキング

人気blogランキングへ
FC2 Blog Ranking
カブクンブログマーケットランキング投票
banner3

ウィザーズファンド運用日記



スポンサー広告 トラックバック(-) | コメント(-) | [EDIT]
タイトル画像

csvデータを、ある項目をキーにして並び替える(amazon Product Advertising API試用 第7回 )

2010.06.14(03:09) 717

前回に引き続き、Amazon Product Advertising APIのお勉強。

目的:amazonマーケットプレイスで高く売れる商品を検索できるようにしたい。

  • 高く売れるものは下記の条件のうちのどれかを満たしているものだと思う。これを検索できるようにしたい。まずは、パソコン上でリストを作るようにしたい。
    • 誰も出品していないもの
      • メリット
        • 好きな値段をつけられる。
        • 必要としている人がいれば、高価でも買い取ってもらえる。
      • デメリット
        • 出品されていないだけに物がないかもしれない。
        • 売れないのかもしれない。
    • amazonが在庫を切らしているもの(出品者からしか買えないもの)
      • メリット
        • 出品者がいるので、高く売れる可能性が高い。
        • 出品者がいるということは何らかの手段で調達可能
        • 店頭で見つければ、即売れかも。
      • デメリット
        • 売れないのかもしれない。
    • 中古でも定価に比べて割引率が低い値段がついているもの中古でも高値で売れるもの
      • メリット
        • 出品者がいるので、売れる可能性が高い。
        • 仕入れが容易な可能性が高い。
      • デメリット
        • 新しいものが多いと考えられるので、仕入れ値が比較的高くつくかも。
        • 価格競争が激しい可能性があるため、不良在庫化するかも。

今書いてるamazon関連のスクリプトで、csvデータをソートしたい場面が出てきました。しかも2項目をキーにして。

いろいろ調べたところ、

  • csvは、ハッシュとして扱うと便利であること。
  • ハッシュは、sortメソッドを使って、キーの値を使用して並べ替えることができること

がわかりました。以下のようにして実行するめどが立ちました。

require 'csv'

#book1.csvの中身
#ASIN,cost,name
#1,4,7
#2,5,8
#3,6,9


arr_ori = []

csv=CSV.readlines("book1.csv")

keys = csv[0]
array = csv[1..-1]

#p keys
#p array

#各書籍のデータを1ハッシュにして、それを要素とする配列を作る。
array.each_with_index do |row,i|
  arr_ori[i] = Hash[*keys.zip(row).flatten]
end

#ASINの項目で昇順にソート
arr_high = arr_ori.sort do |a,b|
  a[keys[0]] <=> b[keys[0]]
end

#costの項目で降順にソート
arr_low = arr_ori.sort do |a,b|
  b[keys[1]] <=> a[keys[1]]
end


p "ソート前"
p arr_ori
p "昇順にソート"
p arr_high
p "降順にソート"
p arr_low

参考元(というかそのまま)

勉強資料 (主な引用元)

amazon Product Advertising API試用 これまでの軌跡

スポンサーサイト
参加ランキング

人気blogランキングへ
FC2 Blog Ranking
カブクンブログマーケットランキング投票
banner3

ウィザーズファンド運用日記



タイトル画像

amazon Product Advertising API試用 第6回

2010.06.14(03:07) 712

前回に引き続き、Amazon Product Advertising APIのお勉強。

目的:amazonマーケットプレイスで高く売れる商品を検索できるようにしたい。

  • 高く売れるものは下記の条件のうちのどれかを満たしているものだと思う。これを検索できるようにしたい。まずは、パソコン上でリストを作るようにしたい。
    • 誰も出品していないもの
      • メリット
        • 好きな値段をつけられる。
        • 必要としている人がいれば、高価でも買い取ってもらえる。
      • デメリット
        • 出品されていないだけに物がないかもしれない。
        • 売れないのかもしれない。
    • amazonが在庫を切らしているもの(出品者からしか買えないもの)
      • メリット
        • 出品者がいるので、高く売れる可能性が高い。
        • 出品者がいるということは何らかの手段で調達可能
        • 店頭で見つければ、即売れかも。
      • デメリット
        • 売れないのかもしれない。
    • 中古でも定価に比べて割引率が低い値段がついているもの中古でも高値で売れるもの
      • メリット
        • 出品者がいるので、売れる可能性が高い。
        • 仕入れが容易な可能性が高い。
      • デメリット
        • 新しいものが多いと考えられるので、仕入れ値が比較的高くつくかも。
        • 価格競争が激しい可能性があるため、不良在庫化するかも。

前回調べたタグの情報を実際に取得して、リスト化してみる。

情報の取得は、第3回 のスクリプトを使用した。これに、他のタグ情報取得部分、リスト化(csv出力)部分を書き足した。

こんな感じで、リストを入手。 もう少しいろいろ足してゆけば、十分使えそうな感じだ。

ISBN13,タイトル,著者,出版社,種別,出版日,定価(円),中古最安値(円),売り上げ順位(位),新品出品数(件),中古出品数(件),対新品比率(%)
9784791763054,天才数学者はこう賭ける―誰も語らなかった株とギャンブルの話,ウィリアム パウンドストーン,青土社,単行本,2006-11,2520,1478,64564,1,8,59
9784775970492,新賢明なる投資家 上~割安株の見つけ方とバリュー投資を成功させる方法~《改訂版――現代に合わせた注解付き》 (ウィザードブックシリーズ),ベンジャミン・グレアム,パンローリング,単行本,2005-03-31,3990,2000,37686,1,19,50
9784883996773,海外ファンド投資プラン,森 智紀,すばる舎,単行本,2007-10-18,1680,1100,37660,1,3,65

amazon Product Advertising APIを勉強することで、いろいろアイデアがわいてきた。

ちょっと自分用メモ

よく、amazonの情報を使ってるけど、結構頻繁に更新してるっぽいページを見るが、RESTでの情報取得、スクリプト、htmlテンプレート、cronを組み合わせて、作っているのではないだろうか。そうすれば、半永久的に、cronが動く限り、新鮮な情報をamazonから自動取得して、新鮮な情報を持ったウェブページができるのではないだろうか。Amazonアソシエイト、google adsenseなどの広告、マルチドメイン利用可、サブドメイン利用可のサーバーを使って、完全自動で稼ぐウェブページ群を結構簡単に作成できはしないかな。これはやってる人結構いそうだな。

流行の言葉をキーに、情報取得して、テンプレートを書き換えるスクリプトを書く。スクリプト書いたら、後はcrontabに登録しておいて、適当な頻度で自動情報取得、自動更新。情報商材の自動で稼ぐとかの正体こんな感じだったりして。

旅情報ページも、そんな感じで自動化できないかな。リストは、こっちで作るから、季節の言葉とかをcronで入れてくれたりするの。あと、じゃらんや楽天のAPIつかって、プラン情報やらナンやら取得できんかな。

ssh、telnet、cron、ruby、マルチドメイン利用可、サブドメイン無制限可、容量大、月額500円くらい、転送無制限のレンタルサーバーないだろうか。。。すみだレンタルサーバ (ssh、telnetなし)CORESERVER.JP (月額1050円くらい)あたりがよさそう。ssh、telnet、cron、rubyとくると、月額1050円は覚悟しないといけないのだろうか。いろいろ見てみたが、ssh、telnetできるのは比較的高いところに限られそうだ。安くて、sshできないところにして、今使ってるさくらインターネットよりftpでデータをあげるか?ftp動作をシェルスクリプトに書いてcronで実行できるのだろうか?

(→http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=37911&forum=10http://www.itmedia.co.jp/help/tips/linux/l0462.htmlでできるみたい。)

勉強資料 (主な引用元)

amazon Product Advertising API試用 これまでの軌跡

参加ランキング

人気blogランキングへ
FC2 Blog Ranking
カブクンブログマーケットランキング投票
banner3

ウィザーズファンド運用日記



タイトル画像

amazon Product Advertising API試用 第5回

2010.06.10(01:22) 711

前回に引き続き、Amazon Product Advertising APIのお勉強。

目的:amazonマーケットプレイスで高く売れる商品を検索できるようにしたい。

  • 高く売れるものは下記の条件のうちのどれかを満たしているものだと思う。これを検索できるようにしたい。まずは、パソコン上でリストを作るようにしたい。
    • 誰も出品していないもの
      • メリット
        • 好きな値段をつけられる。
        • 必要としている人がいれば、高価でも買い取ってもらえる。
      • デメリット
        • 出品されていないだけに物がないかもしれない。
        • 売れないのかもしれない。
    • amazonが在庫を切らしているもの(出品者からしか買えないもの)
      • メリット
        • 出品者がいるので、高く売れる可能性が高い。
        • 出品者がいるということは何らかの手段で調達可能
        • 店頭で見つければ、即売れかも。
      • デメリット
        • 売れないのかもしれない。
    • 中古でも定価に比べて割引率が低い値段がついているもの中古でも高値で売れるもの
      • メリット
        • 出品者がいるので、売れる可能性が高い。
        • 仕入れが容易な可能性が高い。
      • デメリット
        • 新しいものが多いと考えられるので、仕入れ値が比較的高くつくかも。
        • 価格競争が激しい可能性があるため、不良在庫化するかも。

今回は、XMLの中に欲しいデータがあるのか、どのデータが使えそうかを見る。それぞれ、下記の本をサンプルとして、データを取り出してみる。

  1. 誰も出品していないもの
    • 適切なサンプルが見つからない。表示されないのかな。
  2. amazonが在庫を切らしているもの(出品者からしか買えないもの)
  3. 中古でも定価に比べて割引率が低い値段がついているもの中古でも高値で売れるもの

XMLのデータで、使えそうなものを示す。

  1. 誰も出品していないもの
    • 適切なサンプルが見つからないので保留。
  2. amazonが在庫を切らしているもの(出品者からしか買えないもの)
    • ItemLookupResponse/Items/Item/OfferSummary/TotalNew 新品の出品があれば、ここが、1以上の値をとる。0であれば、新品なし。サンプルでは、0。
    • ItemLookupResponse/Items/Item/OfferSummary/TotalUsed 中古品の出品があれば、ここが、1以上の値をとる。サンプルでは、1。
    • ItemLookupResponse/Items/Item/OfferSummary/LowestUserPrice/Amount 最も安い中古品の値段。サンプルでは、1692。
    • ItemLookupResponse/Items/Item/ItemAttributes/ListPrice/Amount 定価。サンプルでは、630。
    • ItemLookupResponse/Items/Item/SalesRank amazon内での売り上げ順位
    • ItemLookupResponse/Items/Item/ItemAttributes/Binding 単行本かどうか。サンプルでは、単行本。
    • Author、Publisher、EAN、Titleなども必要か。
  3. 中古でも定価に比べて割引率が低い値段がついているもの中古でも高値で売れるもの
    • サンプル結果が違うだけ。
    • 割引率は、ItemLookupResponse/Items/Item/OfferSummary/LowestUserPrice/Amount、ItemLookupResponse/Items/Item/ItemAttributes/ListPrice/Amount の割合から計算できる。

上記のタグを使用して、下記の項目をcsvにでも落として、表として、印刷できるようにしたい。

  • タイトル
  • 著者
  • 出版社
  • 本の種類
  • ISBNコード
  • 定価
  • 中古最安値
  • 売り上げ順位

今考えている処理手順は、下記の通り。

  1. ブラウズノードを設定し、売れてる順番でソートし、上位4000位までを取得する。←xmlで取得。
  2. xmlから、上記のタグを抜き出しリストにする。←rubyで処理。
  3. リストより、高く売れそうなもの(今のところ2,3の条件)を抜き出す。←rubyで処理。エクセルでも良いか。

これができたら、せどり補助ツールとして売れないだろうか。

というか、既にあった。これこれとか。やってることは、これからやろうとしていることと、基本は同じではないだろうか。

DVD、CD、ゲームなど、他の商品にも応用できるんだね。自分専用にさっさとつくってしまおう。

案外個人的にやっている人は多いかもしれませんね。

勉強資料 (主な引用元)

amazon Product Advertising API試用 これまでの軌跡

参加ランキング

人気blogランキングへ
FC2 Blog Ranking
カブクンブログマーケットランキング投票
banner3

ウィザーズファンド運用日記



タイトル画像

amazon Product Advertising API試用 第4回

2010.06.09(00:42) 709

前回に引き続き、amazonのお勉強。 AWSではなく、Product Advertising APIというようです。

目的:amazonマーケットプレイスで高く売れる商品を検索できるようにしたい。

  • 高く売れるものは下記の条件のうちのどれかを満たしているものだと思う。これを検索できるようにしたい。まずは、パソコン上でリストを作るようにしたい。
    • 誰も出品していないもの
      • メリット
        • 好きな値段をつけられる。
        • 必要としている人がいれば、高価でも買い取ってもらえる。
      • デメリット
        • 出品されていないだけに物がないかもしれない。
        • 売れないのかもしれない。
    • amazonが在庫を切らしているもの(出品者からしか買えないもの)
      • メリット
        • 出品者がいるので、高く売れる可能性が高い。
        • 出品者がいるということは何らかの手段で調達可能
        • 店頭で見つければ、即売れかも。
      • デメリット
        • 売れないのかもしれない。
    • 中古でも定価に比べて割引率が低い値段がついているもの中古でも高値で売れるもの
      • メリット
        • 出品者がいるので、売れる可能性が高い。
        • 仕入れが容易な可能性が高い。
      • デメリット
        • 新しいものが多いと考えられるので、仕入れ値が比較的高くつくかも。
        • 価格競争が激しい可能性があるため、不良在庫化するかも。

前回見つけたコードで、xmlで情報を取得するところまでできた。今回は取得した情報の中に、必要な情報があるかを確認していく。

書籍の基本的な情報のほかに、目的にあげた三種類の本を探すために、必要な情報は、下記のようである(と今のところ思う)。あとは、売れ行きも気になるので、売れてる順番にリストを作成できたりすると良い。

  1. 誰も出品していないもの
    • 出品者がいるかどうか。
  2. amazonが在庫を切らしているもの(出品者からしか買えないもの)
    • 出品者がいるかどうか。
    • アマゾンの在庫があるか。
  3. 中古でも定価に比べて割引率が低い値段がついているもの中古でも高値で売れるもの
    • 出品者がいるかどうか。
    • アマゾンの在庫があるか。
    • 定価と最も安い出品価格

検索条件として指定可能かどうか調べた。

  • 出品者がいるかどうか。
    • こういう項目はない。
  • アマゾンの在庫があるか。
    • こういう項目はない。
  • 定価
    • こういう項目はない。
  • 最も安い出品価格
    • MinimumPriceが検索条件として指定可能
  • 売れている順番にリスト
    • Sortにsalesrankを指定することでできる。

上記4項目のうち、上の3つは、出力されるXMLの中に入っていれば良いのかもしれないことに気がついた。それを別の手段で処理してやればよいのか。

とりあえず、検索範囲を狭めるため、ブラウズノード(今回は株式)を指定し、中古で1000円以上の商品を、売れている順にソートするリクエストを書いてみる。

http://ecs.amazonaws.jp/onca/xml?
Service=AWSECommerceService
&Version=2009-07-01
&ResponseGroup=Medium
&Operation=ItemSearch
&SearchIndex=Books
&BrowseNode=505322
&Sort=salesrank
&MinimumPrice=1000
&Condition=Used
&MerchantId=All

一応意図した通りに出力できている模様。ただし、中身を見てみると、売れている本は最近出版されたものが多く、中古で手に入れにくいと思われる。あと、1000円上という条件では、本体価格は、1000円以上だけど、中古価格が1000円以上になってない。その辺の条件は、少し考えてみる必要がある。もしくは、xmlで得られた情報から処理する方法を考える。
 

勉強資料 (主な引用元)

amazon Product Advertising API試用 これまでの軌跡

第1回

第2回

参加ランキング

人気blogランキングへ
FC2 Blog Ranking
カブクンブログマーケットランキング投票
banner3

ウィザーズファンド運用日記



タイトル画像

amazon AWS試用 第3回

2010.06.05(23:06) 701

前回に引き続き、amazonのお勉強。

目的:amazonマーケットプレイスで高く売れる商品を検索できるようにしたい。

  • 高く売れるものは下記の条件のうちのどれかを満たしているものだと思う。これを検索できるようにしたい。まずは、パソコン上でリストを作るようにしたい。
    • 誰も出品していないもの
      • メリット
        • 好きな値段をつけられる。
        • 必要としている人がいれば、高価でも買い取ってもらえる。
      • デメリット
        • 出品されていないだけに物がないかもしれない。
        • 売れないのかもしれない。
    • amazonが在庫を切らしているもの(出品者からしか買えないもの)
      • メリット
        • 出品者がいるので、高く売れる可能性が高い。
        • 出品者がいるということは何らかの手段で調達可能
        • 店頭で見つければ、即売れかも。
      • デメリット
        • 売れないのかもしれない。
    • 中古でも定価に比べて割引率が低い値段がついているもの
      • メリット
        • 出品者がいるので、売れる可能性が高い。
        • 仕入れが容易な可能性が高い。
      • デメリット
        • 新しいものが多いと考えられるので、仕入れ値が比較的高くつくかも。
        • 価格競争が激しい可能性があるため、不良在庫化するかも。

 

amazon AWSのデータをrubyで処理したいため、ちょっと調べてみた。そこで、http://diaspar.jp/node/239を見つけた。

http://diaspar.jp/node/239のコードを使用してみた。RDE上で文字がうまく表示されないため、kconvを使用して文字コードを変換してみたところ、うまく表示されるようになった。変えたのは太文字のところだけです。RDEの文字コードの設定がおかしかったような気がしてきました。いまさらながら。

sakuraインターネットで借りてるサーバーで試したところ、kconv(Kconv::SJIS,Kconv::UTF8)toeucに変えたところ、うまく文字が表示されるようになりました。このあたり詳しくなくて、やってみたらどうだったという場当たり的な感じです。

parあたりをいじれば使えそうな感じです。http://diaspar.jp/さんに感謝です。

 

require 'date'
require 'openssl'
require 'base64'
require 'cgi'
require 'net/http'
require 'rexml/document'
require 'kconv'

AccessKey = 'aaaaaa'                      # 要変更
SecretKey = 'bbbbbb'            # 要変更

Host = 'webservices.amazon.co.jp'
Path = '/onca/xml'

ISBN13 =
  [
   '9784894712850', '9784822234300', '9784797336610', '9784873113944',
   '9784873113678', '9784839927844', '9784777512928', '9784797340044',
   '9784274066429', '9784873113562'
  ]

def make_req(items, access_key, secret_key)
  gmt = DateTime.now.new_offset.strftime('%Y-%m-%dT%XZ')
  par =
    [
     'Service=AWSECommerceService',
     'Version=2009-01-06',
     'AWSAccessKeyId=' + access_key,
     'ContentType='    + CGI.escape('text/xml'),
     'Operation=ItemLookup',
     'SearchIndex=Books',
     'ResponseGroup='  + CGI.escape('Medium,Reviews,EditorialReview'),
     'IdType=ISBN',
     'ItemId='         + CGI.escape(items.join(',')),
     'Timestamp='      + CGI.escape(gmt)
    ].sort.join('&')
  msg = [ 'GET', Host, Path, par ].join("\n")
  dig = OpenSSL::HMAC::digest(OpenSSL::Digest::SHA256.new, secret_key, msg)
  sig = CGI.escape(Base64.encode64(dig).chomp)
  "#{Path}?#{par}&Signature=#{sig}"
end

begin
  Net::HTTP.start(Host, 80) { |http|
    req = make_req(ISBN13, AccessKey, SecretKey)
    doc = REXML::Document.new(http.get(req).body)
    doc.elements.each('ItemLookupResponse/Items/Item/ItemAttributes') { |item|
      puts '%s -> %s' % [item.text('EAN'), item.text('Title').kconv(Kconv::SJIS,Kconv::UTF8)]
    }
  }
end

 

勉強資料 (主な引用元)

 

amazon AWS試用 これまでの軌跡

参加ランキング

人気blogランキングへ
FC2 Blog Ranking
カブクンブログマーケットランキング投票
banner3

ウィザーズファンド運用日記



Amazon Product Advertising API
  1. スポンサーサイト(--/--)
  2. csvデータを、ある項目をキーにして並び替える(amazon Product Advertising API試用 第7回 )(06/14)
  3. amazon Product Advertising API試用 第6回(06/14)
  4. amazon Product Advertising API試用 第5回(06/10)
  5. amazon Product Advertising API試用 第4回(06/09)
  6. amazon AWS試用 第3回(06/05)
次のページ
次のページ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。