2010-12-31 27 views
27

Amazon kısa süre önce API'lerini değiştirdi ve artık bu API'ları kullanarak programlı olarak Amazon'da WishList'ime erişmenin bir yolu olmadığını görüyoruz. Ekranda kazıma işleminin yanında kimse bunu yapmayı biliyor mu? Belki bazı üçüncü taraf hizmeti (sadece kamuya açık verilerle çalışmayı umursamıyorum)?Amazon Wishlist'e programatik erişim?

cevap

15

ekran kazıma için, kompakt düzen stili yararlı olabilir: http://bililite.com/blog/2010/10/31/hacking-my-way-to-an-amazon-wishlist-widget/

Güncelleme

google e-tablolarında bazı kendi hack yaptım ve çalışma 2 temel uygulamaları başardı.

kullanma Google Apps Komut: A1 hücresine

Tipi İstek kimliği. Bir google kopyalayıp aşağıdaki yapıştırın komut (Araçlar> Scripts> Komut Editör) uygulamaları ve getWishlist işlevini çalıştırın:

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, ben başlığa uyan regex ile bazı probs yaşıyorum/fiyat. Neden olduğundan emin değil, ama temel fikri gösterir.

kullanma Google E-Tablo Fonksiyonlar

A1 hücresine içine dilek kimliğini yazın.

Aşağıdaki işlevi A2'ye yazın.

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

Tip kimliği dizesinden asin çıkartacaktır B2 aşağıdaki fonksiyonu:

=right(A2, 10) 
Bu istek listenizde her öğe için id dizeleriyle hücreyi ve onun altındaki tüm dolduracaktır

Tipi başlığı B2 içinde ASIN için listeleme teklifini getir ve görüntüler B3 aşağıdaki fonksiyonu: alıp bunu

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

Tip B4 içine şu fonksiyonu, teklif B2 içinde ASIN için listeleme ve tüm fiyatlar görüntüler:

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

bağlantı umut verici görünüyor, teşekkürler! – StasM

+0

sadece bunu denedim, amazon.com yerine amazon.co.uk. xpath sorgulama hatalarının alınması. herhangi bir fikir? –

+0

@ LarryG.Wapnitsky Bu kod, 3 yıl önce olduğu gibi Amazon'a dayanıyor, bu yüzden HTML muhtemelen değişti. Gördüğünüz hatayı daha ayrıntılı olarak paylaşabilir veya Google e-tablonuzu paylaşabilir ve bir göz atacağım. – robd

12

Bir adam Justin Scarpetti İstek listenizi sıyırıp ve json formatında veri döndürür oldukça düzgün "api" yarattı çağırdı.

Bu, Amazon İstek Listesi verilerini almak için küçük bir API'dir. Amazon birkaç yıl önce kapattığı için resmi API'sı yok. Ekran kazıma etrafında tek yolu.

Amazon İstek Lister phpQuery (DOM tahrik sunucu tarafı CSS3 seçici jQuery dayalı API) kullanır JSON, XML veya PHP Array nesnesi 'Amazon'un İstek Listesi sayfası ve ihracatını kazımak için.

Dilek listenizi kendi web sitenizde görüntülemek istiyorsanız mükemmel bir seçim yapın.

Kaynak: Amazon Wish Lister

+20

Hey! O benim! :) – doitlikejustin

+0

Hey Andy, Bunu mobil uçta kullanabilir miyim? eğer evet ise lütfen bana yolu bildirin. – Kumar

+1

Merhaba @Kumar ama bunun bir mobil arka uç ile entegre edilmesi konusunda herhangi bir tavsiye veremem. Ancak, JSON çıkışı ile mobil uygulama geliştirmede bunu çok fazla sorun olmadan kullanabilmeniz gerekir. –