Amazon 最近更改了他们的 API,现在似乎无法使用这些 API 以编程方式访问我在 Amazon 上的 WishList。除了屏幕抓取之外,任何人都知道有什么方法吗?也许是一些第三方服务(我不介意只使用公共数据)?
2 回答
对于屏幕抓取,紧凑的布局样式可能会有所帮助: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']"))
一个叫 Justin Scarpetti 的人创建了一个非常简洁的“api”,它可以抓取您的愿望清单并以 json 格式返回数据。
这是一个用于检索 Amazon Wish List 数据的小 API。没有官方 API,因为亚马逊几年前关闭了它。解决这个问题的唯一方法......屏幕抓取。
Amazon Wish Lister 使用 phpQuery(基于 jQuery 的服务器端 CSS3 选择器驱动的 DOM API)来抓取 Amazon 的 Wish List 页面并导出为 JSON、XML 或 PHP 数组对象。
如果您想在自己的网站上显示您的愿望清单,那就完美了。
来源:亚马逊愿望清单