Программный доступ к Amazon Wishlist? - PullRequest
28 голосов
/ 31 декабря 2010

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

Ответы [ 2 ]

15 голосов
/ 10 января 2011

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

Обновление

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

Использование сценариев Google Apps:

Введите свой идентификатор списка желаний в ячейку A1. Скопируйте и вставьте следующее в скрипт приложений 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);
}

NB, у меня есть некоторые пробники с регулярным выражением, соответствующим названию / цене. Не знаю почему, но показывает основную идею.

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

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

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

=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']"))
13 голосов
/ 08 марта 2013

Парень по имени Джастин Скарпетти создал действительно аккуратный "api", который очищает ваш список желаний и возвращает данные в формате json.

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

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

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

Источник: Список желаний Амазонки

...