首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以编程方式访问Amazon Wishlist?

以编程方式访问Amazon Wishlist?
EN

Stack Overflow用户
提问于 2010-12-31 13:10:12
回答 2查看 19.2K关注 0票数 30

亚马逊最近改变了他们的API,现在似乎没有办法使用这些API以编程方式访问我在亚马逊上的WishList。除了抓屏之外,还有谁知道怎么做呢?也许是一些第三方服务(我不介意只使用公共数据)?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-01-10 05:22:01

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

更新

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

使用谷歌应用脚本的

在单元格A1中输入您的愿望列表ID。将以下内容复制并粘贴到谷歌应用程序脚本(工具>脚本>脚本编辑器)中,然后运行getWishlist函数:

代码语言:javascript
复制
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,我遇到了一些正则表达式匹配标题/价格的问题。不知道为什么,但显示了基本的想法。

使用谷歌电子表格函数的

在单元格A1中输入您的愿望列表ID。

在A2中键入以下函数。它将使用wishlist中每一项的id字符串填充单元格及其下面的所有内容:

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

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

代码语言:javascript
复制
=right(A2, 10)

在B3中键入以下函数,该函数将在B2中获取asin的报价列表并显示标题:

代码语言:javascript
复制
=importXML("http://www.amazon.co.uk/gp/offer-listing/"&B2, "//h1")

在B4中键入以下函数,该函数将在B2中获取asin的报价列表,并显示所有价格:

代码语言:javascript
复制
=concatenate(importXML("http://www.amazon.co.uk/gp/offer-listing/"&B2, "//span[@class='price']"))
票数 15
EN

Stack Overflow用户

发布于 2013-03-08 21:50:42

一个叫Justin Scarpetti的家伙创建了一个非常巧妙的"api“,它可以抓取你的愿望列表并以json格式返回数据。

这是一个检索亚马逊愿望列表数据的小应用程序接口。没有官方的API,因为亚马逊在几年前关闭了它。唯一的办法就是..。屏幕抓取。

Amazon Wish Lister使用phpQuery (基于jQuery的服务器端CSS3选择器驱动的DOM )来抓取亚马逊的愿望列表页面,并将其导出为JSON、XML或PHP Array对象。

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

来源:Amazon Wish Lister

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4568209

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档