Frage

Amazon hat kürzlich seine APIs geändert, die und es scheint jetzt keine Möglichkeit zu geben, mit diesen APIs programmgesteuert auf meine Wunschliste auf Amazon zuzugreifen. Hat jemand eine Möglichkeit, dies neben dem Bildschirmkratzen zu tun? Vielleicht ein Drittanbieter-Service (es macht mir nichts aus, nur mit öffentlichen Daten zu arbeiten)?

War es hilfreich?

Lösung

Für Bildschirmkratzen kann der kompakte Layout -Stil hilfreich sein: http://bililite.com/blog/2010/10/31/hacking-my-way-to-an-amazon-wishlist-widget/

Aktualisieren

Ich habe meine eigenen in Google -Tabellenkalkulationen selbst gehackt und es geschafft, 2 grundlegende Implementierungen zum Laufen zu bringen.

Verwenden von Google Apps -Skripten:

Geben Sie Ihre Wunschliste -ID in Zelle A1 ein. Kopieren und fügen Sie Folgendes in ein Google Apps -Skript (Tools> Skripts> Skripteditor) ein und führen Sie die Funktion GetWishList aus:

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, ich habe einige Probs mit Regex, die mit dem Titel / Preis übereinstimmen. Ich bin mir nicht sicher warum, zeigt aber die Grundidee.

Verwenden von Google -Tabellenkalkulationsfunktionen

Geben Sie Ihre Wunschliste -ID in Zelle A1 ein.

Geben Sie die folgende Funktion in A2 ein. Mit den ID -Zeichenfolgen für jedes Element in Ihrer Wunschliste wird die Zelle und alles darunter gefüllt:

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

Geben Sie die folgende Funktion in B2 ein, wodurch die ASIN aus der ID -Zeichenfolge extrahiert wird:

=right(A2, 10)

Geben Sie die folgende Funktion in B3 ein, wodurch die Angebotsliste für die ASIN in B2 abgerufen wird und den Titel anzeigen wird:

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

Geben Sie die folgende Funktion in B4 ein, wodurch die Angebotsliste für die ASIN in B2 abgerufen wird und alle Preise angezeigt wird:

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

Andere Tipps

Ein Typ namens Justin Scarpetti hat eine wirklich ordentliche "API" erstellt, die Ihre Wunschliste kratzt und die Daten im JSON -Format zurückgibt.

Dies ist eine kleine API zum Abrufen von Amazon -Wunschlistedaten. Es gibt keine offizielle API, da Amazon sie vor ein paar Jahren geschlossen hat. Der einzige Weg um dieses ... Bildschirmkratzen.

Amazon Wish Lister verwendet PHPQuery (serverseitige CSS3-Selektor-DOM-API basierend auf JQuery), um die Wunschliste von Amazon zu kratzen und exportiert nach JSON, XML oder PHP Array-Objekt.

Perfekt, wenn Sie hosten möchten, zeigen Sie Ihre Wunschliste auf Ihrer eigenen Website an.

Quelle: Amazon Wunsch Lister

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top