Ruby on Rails 使用 API 从亚马逊购买商品?
Posted
技术标签:
【中文标题】Ruby on Rails 使用 API 从亚马逊购买商品?【英文标题】:Ruby on Rails Purchase item from Amazon using API? 【发布时间】:2018-06-05 23:16:55 【问题描述】:我想通过我的 rails 应用程序以编程方式自动在亚马逊上进行购买,因为我必须每周都手动进行相同的购买。这将使用我自己的帐单信息/帐户,而不是代表用户。
我搜索了他们的大部分 API,发现您可以搜索商品、将其添加到购物车等,但我似乎找不到实际购买的方法。
有谁知道通过 API 执行此操作的方法?自动化我们的手动过程会很棒。看起来应该是可能的,因为https://zincapi.com/ 似乎促进了这一点。
【问题讨论】:
我相信实现这一点的唯一方法是绘制亚马逊的私有 API,例如亚马逊应用程序使用什么。不过,我确信这违反了他们的 TOS。我不知道正式这样做。 【参考方案1】:您可以这样做,只需 not via the API。相反,使用:
机械化
正如their docs 中所描述的那样:
Mechanize 库用于自动与网站交互。 Mechanize 自动存储和发送 cookie,跟踪重定向,并且可以跟踪链接和提交表单。可以填充和提交表单字段。
您可以编写一个高级网络爬虫程序
让您登录亚马逊 将您想要的物品添加到购物篮中 结帐并支付您想要的物品如何设置
我将提出一些逻辑并粗略描述该过程。详细解释所有内容超出了问题的范围。为大量挖掘做好准备。
1.添加您的抓取工具
深入了解机械化。了解如何登录您的网站、搜索链接、按下按钮以及所有这些简洁的东西。它建立在使用 CSS 选择器的Nokogiri 之上。可能需要一段时间才能掌握,但值得付出汗水!
此外,将单个任务的逻辑拆分为不同的方法。类似的东西
class AmazonCrawler
attr_accessor :agent
def initialize
@agent = Mechanize.new
end
def login
agent.get(LOGIN_PATH)
# fill in and submit the form
end
def add_item_to_basket
agent.get(ITEM_PATH)
# find 'add to basket', etc...
end
def checkout
agent.get(CHECKOUT_PATH)
# validate adress, payment and place the order
end
def place_weekly_order
AmazonCrawler.login
AmazonCrawler.add_item_to_basket
AmazonCrawler.checkout
end
end
这样,您可以在以后需要时轻松添加其他任务
2。添加 Cronjob
要设置您的每周计划,我建议使用whenever gem。这个 gem 让调度任务变得轻松简单
schedule.rb
every :sunday, :at => '12pm' do
runner "AmazonCrawler.place_weekly_order"
end
旁注
理想情况下,我会设置一个特定的亚马逊账户,只做这个。您不希望机器人结帐您在一周内亲自添加的物品,并且可能还不确定是否要购买。
此外,请务必将您的凭据存储在 ENV 变量中,这样它们就不会暴露在您的代码中。
结论
我希望这能让你继续前进,你会学到很多新东西,但这实际上是一项有趣的任务,当你的小爬虫启动并运行时会非常有益。
【讨论】:
看来这几周会很有趣!感谢您提供详细的示例和建议!以上是关于Ruby on Rails 使用 API 从亚马逊购买商品?的主要内容,如果未能解决你的问题,请参考以下文章
Ruby on Rails Paypal REST API 来宾结账
如何在 ruby on rails 中集成多个支付网关(多个商家)?
ruby 使用Devise gem验证您的API,使用标头标记。 Ruby on Rails 4.阅读评论。
如何使用 Ruby on Rails 模拟 twitter api?
如何从我的 Ruby on Rails API 解析这些散列转换为字符串,以便它可以作为 Javascript 中的对象进行访问?