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 从亚马逊购买商品?的主要内容,如果未能解决你的问题,请参考以下文章