以编程方式访问Amazon Wishlist?

时间:2010-12-31 05:10:12

标签: api amazon-web-services google-apps-script amazon

亚马逊最近更改了他们的API,现在似乎无法使用这些API以编程方式访问我在亚马逊上的WishList。除了屏幕抓取之外,有人知道有什么方法吗?也许有些第三方服务(我不介意只使用公共数据)?

2 个答案:

答案 0 :(得分:15)

对于屏幕抓取,紧凑的布局样式可能会有所帮助:http://bililite.com/blog/2010/10/31/hacking-my-way-to-an-amazon-wishlist-widget/

<强>更新

我在谷歌电子表格中做了一些自己的黑客攻击,并设法让2个基本实现工作。

使用Google Apps脚本:

在单元格A1中输入您的心愿单ID。将以下内容复制并粘贴到Google Apps脚本(工具&gt;脚本&gt;脚本编辑器)中,然后运行getWishlist函数:

function getWishlist(){
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
  var wishlistId = sheet.getRange('a1').getValue(); 
  var response = UrlFetchApp.fetch("http://www.amazon.co.uk/registry/wishlist/" + wishlistId + "?layout=compact").getContentText();
  var asinRegex = /name="item.([\d]+)\.(?:[A-Z0-9]+).([A-Z0-9]+).*/g
  while (match = asinRegex.exec(response)) {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
    var rowIndex = Number(match[1])+2;
    var asin = match[2];
    setRow(sheet, rowIndex, asin);
    var offers = UrlFetchApp.fetch("http://www.amazon.co.uk/gp/offer-listing/" + asin).getContentText();    
    setRow(sheet, rowIndex, asin, 
           getFirstMatch(/class="producttitle">(.+)</g, offers),
           getFirstMatch(/class="price">(.+)</g, offers));
  }  
  Browser.msgBox("Finished");
}

function getFirstMatch(regex, text) {
  var match = regex.exec(text);
  return (match == null) ? "Unknown" : match[1];
}

function setRow(sheet, index, a, b, c) {
  sheet.getRange('a' + index).setValue(a);
  sheet.getRange('b' + index).setValue(b);
  sheet.getRange('c' + index).setValue(c);
}

NB,我正在使用正则表达式匹配标题/价格的一些probs。不知道为什么,但显示了基本的想法。

使用Google电子表格功能

在单元格A1中输入您的心愿单ID。

在A2中输入以下功能。它将使用心愿单中每个项目的id字符串填充单元格及其下方的所有单元格:

=importXML("http://www.amazon.co.uk/registry/wishlist/"&A1&"?layout=compact", "//*[starts-with(@name, 'item.')]/@name")

在B2中输入以下函数,它将从id字符串中提取asin:

=right(A2, 10)

在B3中键入以下功能,它将获取B2中asin的商品列表并显示标题:

=importXML("http://www.amazon.co.uk/gp/offer-listing/"&B2, "//h1")

在B4中键入以下功能,它将获取B2中asin的商品列表并显示所有价格:

=concatenate(importXML("http://www.amazon.co.uk/gp/offer-listing/"&B2, "//span[@class='price']"))

答案 1 :(得分:13)

一个名叫Justin Scarpetti的人创造了一个非常整洁的“api”,它会刮掉你的愿望清单并以json格式返回数据。

  

这是一个用于检索Amazon Wish List数据的小API。没有   官方API,亚马逊几年前关闭它。唯一的办法   围绕着......屏幕刮擦。

     

Amazon Wish Lister使用phpQuery(服务器端CSS3选择器驱动的DOM)   基于jQuery的API)刮掉亚马逊的愿望清单页面并导出到   JSON,XML或PHP数组对象。

     

如果您想要自己主持显示愿望清单,那就太完美了   网站。

来源:Amazon Wish Lister