【问题标题】:how to get sales rank from Amazon ItemSearch/ItemLookup如何从 Amazon ItemSearch/ItemLookup 获得销售排名
【发布时间】:2011-08-15 00:57:25
【问题描述】:
我正在尝试从亚马逊产品广告 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 的问题吗?
【问题讨论】:
标签:
ruby-on-rails
ruby
ruby-on-rails-3
api
amazon
【解决方案1】:
我会用 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。
我希望这会有所帮助。
【解决方案2】:
销售排名很可能不可用。我在亚马逊做过几件事,当他们没有我要找的东西时,我通常会刮掉它。
即- 在代码中,浏览到您想要的特定产品并从亚马逊抓取信息。浏览到 http://www.amazon.com/dp/[ASIN],在产品详细信息下,您可以解析出排名。在代码中,将 [ASIN] 替换为您需要的产品列表中的其他内容。
我使用过 selenium 和 watir 或 watin 等库来轻松抓取我需要的特定信息。