我正试图从亚马逊产品广告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的问题吗?
答案 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这样的库来轻松获取我需要的特定信息。