30

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

4

2 回答 2

15

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

更新

我在 google 电子表格中做了一些自己的修改,并设法让 2 个基本实现工作。

使用 Google Apps 脚本:

在单元格 A1 中输入您的愿望清单 ID。将以下内容复制并粘贴到 google 应用程序脚本(工具 > 脚本 > 脚本编辑器)中,然后运行 ​​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);
}

​ ​ 注意,我遇到了一些与标题/价格匹配的正则表达式的问题。不知道为什么,但显示了基本思想。

使用 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']"))
于 2011-01-09T21:22:00.617 回答
14

一个叫 Justin Scarpetti 的人创建了一个非常简洁的“api”,它可以抓取您的愿望清单并以 json 格式返回数据。

这是一个用于检索 Amazon Wish List 数据的小 API。没有官方 API,因为亚马逊几年前关闭了它。解决这个问题的唯一方法......屏幕抓取。

Amazon Wish Lister 使用 phpQuery(基于 jQuery 的服务器端 CSS3 选择器驱动的 DOM API)来抓取 Amazon 的 Wish List 页面并导出为 JSON、XML 或 PHP 数组对象。

如果您想在自己的网站上显示您的愿望清单,那就完美了。

来源:亚马逊愿望清单

于 2013-03-08T13:50:42.053 回答