amazonで中古の本を上下巻セット買うときのRuby

8月 8th, 2009 admin Posted in Ruby, 未分類 |

・アマゾンで上下巻セットの本を買いたい
・しかも中古で買いたい
・できれば同じ店から2冊買いたい

という要望がたまにあるのだけど、自分でページを見比べるのが面倒なのでスクリプトを書いた。

使用例

ハイペリオン(上)の中古一覧のページハイペリオン(下)の中古一覧のページを調べてコードに投げる

CODE:
  1. $ ruby comp.rb "http://www.amazon.co.jp/gp/offer-listing/4150113335/ref=dp_olp_used?ie=UTF8&qid=1249721097&sr=8-1&condition=used" "http://www.amazon.co.jp/gp/offer-listing/4150113343/ref=dp_olp_used?ie=UTF8&qid=1249724799&sr=1-2&condition=used"
  2.  
  3. #=>"qsemark"
  4. #=>"まにあコレクション"
  5. #=>"晴耕堂"
  6. #=>"イーブックスパイダー吉野の桜店"

とハイペリオンを上下巻セットで出品しているお店の名前がわかる。

コード

Rubyで書いてあります

RUBY:
  1. require 'rubygems'
  2. require 'hpricot'
  3. require 'open-uri'
  4. require 'kconv'
  5.  
  6. $KCODE = 'u'
  7.  
  8. cmp_url1 = ARGV[0]
  9. cmp_url2 = ARGV[1]
  10. list = []
  11.  
  12. name_xpath = '//div[@class="seller"]/a/b'
  13.  
  14. html = Hpricot(open(cmp_url1).read)
  15. html.search(name_xpath).each do |seller|
  16.   list.push(seller.inner_html.toutf8)
  17. end
  18.  
  19. html = Hpricot(open(cmp_url2).read)
  20. html.search(name_xpath).each do |seller|
  21.   shop_name = seller.inner_html.toutf8
  22.   p shop_name if list.include?(shop_name)
  23. end

まとめ

だれかブックマークレットでつくってほしい

Leave a Reply