Last active
December 22, 2015 13:48
-
-
Save tarot/6481327 to your computer and use it in GitHub Desktop.
Kindle検索のクエリパラメータのメモ
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
require 'nokogiri' | |
require 'open-uri' | |
=begin | |
パラメータ: | |
node: ジャンル。例: 2293143051=コミック, 2275256051=本, 2292700051=SF/ホラー/ファンタジー | |
field-releasedate: 発売日の範囲。nxはn日前、nyはn日後らしい。 | |
例: "0x-0x"=今日, "1x-1y"=昨日から明日, "0x-"=今日以降, "-0x"=今日以前 | |
発売日未設定の本は無限に昔の扱いらしい。"-1000000x"とかやるとヒットする。 | |
page: 最大400(19200件)まで。400ページを超えた場合、401以上は400と同じ結果になる。 | |
sort: ソート順序。しかしdaterankはよくわからない順序になる。先頭に"-"をつけると逆順になる。 | |
daterank=発売日の新しい順, paidsalesrank=人気降順, price=価格の安い順, | |
reviewrank_authority=レビュー評価降順, relevancerank=キーワード関連順, reviewrank=おすすめ度 | |
field-title: 書名。単語のAND検索。単語の先頭に"-"をつけるとその単語が除外される。 | |
field-author: 著者。単語のAND検索。単語の先頭に"-"をつけるとその単語が除外される。 | |
"ハインライン"でRobert A. Heinleinがヒットするけど"ロバート"じゃヒットしないとか。 | |
日本人は苗字と名前をスペース区切りにしなくてもヒットするっぽい。 | |
field-publisher: 出版社。単語のAND検索。単語の先頭に"-"をつけるとその単語が除外される。 | |
field-dateyear: 紙の本の出版年。field-dateopも指定しなければならない。 | |
field-datemod: 紙の本の出版月。field-dateyearとfield-dateopも指定しなければならない。 | |
field-dateop: 出版年月の指定方法。紙の本の出版年月が未設定だったりいい加減だったりすることもある。 | |
before=以前, during=のみ, after=以後 | |
field-pct-off: ディスカウント。多分現状は無意味なパラメータ。Kindle端末やアクセサリにしか設定されていない。 | |
例: "-9"=0から9%オフ, "50-"=50から100%オフ, "10-19"=10から19%オフ | |
=end | |
def search node, releasedate: '0x-0x', sort: 'datarank', page: '1', ie: 'UTF8' | |
doc = Nokogiri::HTML open "http://www.amazon.co.jp/s/?ie=#{ie}&node=#{node}&field-releasedate=#{releasedate}&sort=#{sort}&page=#{page}", | |
'User-Agent' => 'nokogiri' | |
raise 'noResultsTitle #{releasedate}' unless doc.css('#noResultsTitle').empty? | |
puts doc.css('#resultCount span').text | |
doc.css('.prod').each do |e| | |
asin = e[:name] | |
(title, author) = e.css('h3 span').map &:text | |
image = e.css('img.productImage').map{|e| e[:src]}.first | |
puts [asin, title, author, image].join "\t" | |
end | |
end | |
nodes = { comic: '2293143051', | |
book: '2275256051', | |
sf: '2292700051' } | |
search nodes[:comic], releasedate: '0x-0x' |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment