Подтвердить что ты не робот

Программный доступ к списку желаний Amazon?

Недавно Amazon изменила свои API-интерфейсы, и, похоже, теперь нет никакого способа получить доступ к моему WishList на Amazon программным образом с использованием этих API. Кто-нибудь знает, как это сделать, кроме скрипинга экрана? Может быть, некоторые сторонние службы (я не против работать только с публичными данными)?

4b9b3361

Ответ 1

Для очистки экрана может потребоваться компактный стиль макета: http://bililite.com/blog/2010/10/31/hacking-my-way-to-an-amazon-wishlist-widget/

Обновление

Я немного взломал свои собственные в электронных таблицах Google и смог получить две основные реализации.

С помощью скриптов Google Apps:

Введите идентификатор списка желаний в ячейку A1. Скопируйте и вставьте следующее в приложения Google script (Инструменты > Скрипты > Редактор скриптов) и запустите функцию 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, у меня есть некоторые проблемы с регулярным выражением, соответствующие названию/цене. Не уверен, почему, но показывает основную идею.

Использование функций электронной таблицы Google

Введите идентификатор списка желаний в ячейку A1.

Введите следующую функцию в A2. Он заполнит ячейку и все ниже ее с идентификационными строками для каждого элемента в вашем списке пожеланий:

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

Введите следующую функцию в B2, которая извлечет asin из строки id:

=right(A2, 10)

Введите следующую функцию в B3, которая отобразит список предложений для asin в B2 и отобразит заголовок:

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

Введите следующую функцию в B4, которая отобразит список предложений для asin в B2 и отобразит все цены:

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

Ответ 2

Парень под названием Justin Scarpetti создал действительно опрятный "api", который сбрасывает ваш список желаний и возвращает данные в формате json.

Это немного API для получения данных списка желаний Amazon. Здесь нет официальный API, поскольку Amazon закрыл его пару лет назад. Единственный путь вокруг этого... экрана соскабливания.

Amazon Wish Lister использует phpQuery (серверный CSS3, управляемый селектором DOM API на основе jQuery), чтобы очистить страницу списка желаний Amazon и экспортировать в JSON, XML или объект массива PHP.

Идеально, если вы хотите разместить свой список пожеланий самостоятельно сайт.

Источник: Amazon Wish Lister