Question

Amazon a récemment changé leurs API qui et il semble qu'il n'y a aucun moyen maintenant d'accéder à mon WishList sur Amazon en utilisant ces API programme. Tout le monde sait quelque façon que de le faire en dehors de l'écran-grattage? Peut-être un service tiers (je ne me dérange pas de travailler avec uniquement des données publiques)?

Était-ce utile?

La solution

Pour le nettoyage de l'écran, le style de mise en page compacte pourrait être utile: http://bililite.com/blog/2010/10/31/hacking-my-way-to-an-amazon-wishlist-widget/

Mise à jour

Je l'ai fait un peu de piratage de mon propre dans des feuilles de calcul de Google et a réussi à obtenir 2 implémentations de travail de base.

Utilisation des scripts Google Apps:

Saisissez votre ID liste dans la cellule A1. Copiez et collez le texte suivant dans un script google apps (Outils> Scripts> Scripts Editor) et exécutez la fonction 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, je vais avoir quelques probs avec regex correspondant au titre / prix. Je ne sais pas pourquoi, mais montre l'idée de base.

Utilisation de Google Fonctions de feuille de calcul

Entrez votre ID liste dans la cellule A1.

Tapez la fonction suivante dans A2. Il remplira la cellule et tous ci-dessous avec les chaînes d'identification pour chaque élément de votre liste:

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

Tapez la fonction suivante dans B2, qui extraira la asin de la chaîne id:

=right(A2, 10)

Tapez la fonction suivante dans B3, qui récupérera l'offre pour la liste asin en B2 et afficher le titre:

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

Tapez la fonction suivante dans B4, qui récupérera l'offre pour la liste asin dans B2 et afficher tous les prix:

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

Autres conseils

Un gars appelé Justin Scarpetti a créé un vraiment bien « api » qui râpe votre liste et renvoie les données au format JSON.

  

Ceci est un petit API pour récupérer des données Amazon Wish List. Il n'y a pas   API officielle, comme Amazon l'éteindre il y a quelques années. La seule manière   autour de cette ... screen scraping.

     

Amazon souhaits Lister utilise phpQuery (côté serveur sélecteur CSS3 entraîné DOM   API basée sur jQuery) pour racler la page Liste de souhaits d'Amazon et les exportations vers   JSON, XML, PHP ou tableau d'objets.

     

Parfait si vous voulez afficher hôte votre liste de souhaits sur votre propre   site web.

Source: Amazon Lister souhaits

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top