如何从Amazon ItemSearch / ItemLookup获得销售排名

时间:2011-08-15 00:57:26

标签: ruby-on-rails ruby ruby-on-rails-3 api amazon

我正试图从亚马逊产品广告API中获取销售排名。我正在使用amazon_product gem。

request = AmazonProduct["us"]

request.configure do |c|
  c.key    = AMAZON_KEY
  c.secret = AMAZON_SECRET
  c.tag    = TAG
end

#itemlookup
response = request.find('B003XU6H8I', :response_group => 'SalesRank')
response.find('Item').first
=> {"ASIN"=>"B003XU6H8I"}

为什么API不返回此商品的销售排名?此外,我尝试通过项目搜索获取SalesRank响应组,但不会返回它们。这是API的问题吗?

2 个答案:

答案 0 :(得分:6)

我只想跟Nokogiri一起刮。

例如,在irb中输入以下内容以查看:

require 'nokogiri'
require 'open-uri'
website = 'http://www.amazon.com/dp/B000YYODLO'
doc = Nokogiri::HTML(open(website))
puts doc.css('#SalesRank').text[/\#.*\)/]

当然,您需要将B000YYODLO更改为您正在搜索的任何ASIN。除非您正在寻找咖啡新闻的销售排名,否则我会立即回答两个问题。

此外,CSS选择器#SalesRank拉出整行,你可以像我一样使用正则表达式来解析你需要的任何内容。

另外,由于我不熟悉你正在使用的api,你可能想查看它是否正在使用css选择器,因为你可能只需要将SalesRank更改为#SalesRank。

我希望这会有所帮助。

答案 1 :(得分:3)

销售排名很可能无法获得。我已经和亚马逊做了几件事,当他们没有找到我想要的东西时,我通常会把它刮掉。

即。 - 在代码中,浏览到您想要的特定产品,并从亚马逊中获取信息。浏览到http://www.amazon.com/dp/[ASIN],根据产品详细信息,您可以解析排名。在代码中,将[ASIN]替换为您需要的产品列表中的其他产品。

我使用了像selenium和watir或watin这样的库来轻松获取我需要的特定信息。