2010-12-31 4 views
27

Amazon hat kürzlich ihre APIs geändert, und es scheint, dass es keine Möglichkeit mehr gibt, auf meine WishList auf Amazon mit diesen APIs programmgesteuert zuzugreifen. Wer weiß, außer Screen Scraping? Vielleicht ein Drittanbieter-Dienst (es macht mir nichts aus, nur mit öffentlichen Daten zu arbeiten)?Programmatic Zugriff auf Amazon Wunschliste?

Antwort

15

Für Screen Scraping, der kompakte Layout-Stil könnte hilfreich sein: http://bililite.com/blog/2010/10/31/hacking-my-way-to-an-amazon-wishlist-widget/

aktualisiert

Ich habe einigen Hacking meiner eigenen in Google-Tabellen und verwalten Arbeits 2 grundlegende Implementierungen zu erhalten.

Mit Google Apps Scripts:

Art der Wunschliste ID in Zelle A1. Kopieren Sie den folgenden in einem Google Apps Script (Tools> Scripts> Scripts Editor), und führen Sie die getWishlist Funktion:

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 passend zum Titel/Preis. Nicht sicher warum, aber zeigt die Grundidee.

Mit Google Spreadsheet-Funktionen

Geben Sie Ihre Wunschliste ID in Zelle A1.

Geben Sie die folgende Funktion in A2 ein. Es wird die Zelle und alle darunter mit den ID-Strings für jeden Artikel auf der Wunschliste füllen:

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

Geben Sie die folgende Funktion in B2, die die asin aus dem ID String extrahieren:

=right(A2, 10) 

Geben Sie die folgende Funktion in B3, die das Angebot Listing für die asin in B2 holen und zeigt den Titel:

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

Geben Sie die folgende Funktion in B4, die die Abruf wird Angebot Auflistung für die asin in B2 und alle Preise angezeigt werden:

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

dass Link sieht vielversprechend aus, danke! – StasM

+0

gerade versucht dies, statt amazon.com für amazon.co.uk. Xpath-Abfragefehler erhalten. irgendwelche Ideen? –

+0

@ LarryG.Wapnitsky Dieser Code basiert auf Amazon, wie es vor 3 Jahren war, also hat sich das HTML wahrscheinlich geändert. Können Sie weitere Details zu dem angezeigten Fehler teilen oder Ihre Google-Tabelle teilen? Ich werde einen Blick darauf werfen. – robd

12

Ein Kerl Justin Scarpetti genannt wirklich ordentlich „api“ geschaffen hat, die Ihre Wunschliste kratzt und gibt die Daten im JSON-Format.

Dies ist eine kleine API zum Abrufen von Amazon-Wunschlistendaten. Es gibt keine offizielle API, wie Amazon vor ein paar Jahren heruntergefahren hat. Der einzige Weg um das ... Screen Scraping.

Amazon Wish Lister verwendet phpQuery (serverseitige CSS3-Selektor angetrieben DOM API basiert auf jQuery) Amazon Wish List Seite und die Exporte nach JSON, XML oder PHP Array-Objekt zu kratzen.

Perfekt, wenn Sie möchten, zeigen Sie Ihre Wunschliste auf eigene Website.

Quelle: Amazon Wish Lister

+20

Hey! Das bin ich! :) – doitlikejustin

+0

Hey Andy, Kann ich das am Handyende nutzen? Wenn ja, lass mich bitte den Weg wissen. – Kumar

+1

hi @Kumar Tut mir leid, aber ich kann Ihnen keinen Rat geben, dies in ein mobiles Backend zu integrieren. Aber mit der Ausgabe, die JSON ist, sollten Sie in der Lage sein, dies in der mobilen App-Entwicklung ohne große Probleme zu verwenden. –