Der ehemaliger Buchversender, bei dem man inzwischen so ziemlich alles kaufen kann, was
das Herz begehrt, bietet schon seit geraumer Zeit diverse Dienste an, derer sich Webmaster
bedienen können, um auf der eigenen Website entweder Werbung für das ein
oder andere Produkt zu machen oder seinen Lesern einen kompletten kleinen
Shop anzubieten. Ziel des Ganzen ist es natürlich an jedem getätigten Kauf
etwas mitzuverdienen. Dies geschieht im Allgemeinen durch Gutschriften, die
der Teilnehmer am sog. Amazon Partner Net dann
gegen Bücher oder DVD's eintauschen kann.
Auch auf dieser Seite befinden sich ein paar Buchempfehlungen, die auf
Amazon verlinkt sind. Die Kaufraten lassen mich jedoch jedes Mal schmunzeln,
denn auf dem Bericht, der mir ab und zu von Amazon geschickt wird, steht
immer ein fette 0. Aber man gibt ja nicht auf. Vielleicht liegt es daran,
dass mein Angebot bislang hard-coded war, als etwas die Dynamik fehlte. Um
die Datenbasis etwas breiter zu gestalten und den Pflegeaufwand zu
minimieren ist das Ziel einer kleinen Renovierungsaktion, über die ich hier
berichten möchte.
Ansatzpunkt dabei ist die sehr umfangreiche Amazon-API, also die
Schnittstellen, die das Unternehmen Webmastern bietet. Diese bauen allesamt
auf XML auf, das sich mit den unterschiedlichsten Programmiersprachen
verarbeiten lässt.
Im Folgenden möchte ich anhand von einzelnen Schritte darlegen, wie man
die Aufgabe am effizientesten lösen kann, auch wenn Amazon es einem durch
ein undurchschaubares Dickicht an Anmeldungen, Schlüsseln und Webseiten
nicht leicht macht. Es wäre wünschenswert, wenn das Unternehmen die Struktur
des Ganzen in Zukunft etwas benutzerfreundlicher gestalten könnte.
Schritt 1: Amazon-Partner werden
Grundlegende Voraussetzung ist zunächst einmal, am
Amazon Partner Net
teilzunehmen. Nach erfolgreicher Anmeldung bekommt man eine sog.
Tracking-ID zugewiesen, die als "Erkennungszeichen" in der
angeklickten URL einer Produktempfehlung mitgeschickt wird, damit Amazon die
anstehende Gutschrift richtig zuordnen kann.
Schritt 2: Access Key Identifier beantragen
Um den Zugriff auf die Schnittstellen etwas zu limitieren, verlangt
Amazon vom nutzungswilligen Webmaster einen kostenlosen Schlüssel zu
beantragen, ohne den ein Abruf der Amazon-Daten nicht möglich ist. Diese
sog. Access Key ID ist eine 20-stellige Zeichenfolge, die
eindeutig einem Partner zugeordnet werden kann. Man erhält sie über die
englisch-sprachigen Seiten der
Amazon Web Services.
Nachdem man sich dort mit seinem normalen Amazon-Account angemeldet und
über die Schaltfläche "Sign up for Web Service" die
Teilnahme am Dienst aktiviert hat, findet man nach etwas Sucherei auf der
Seite irgendwann den Menüpunkt "AWS Access Identifiers".
Tipp: mit der Maus einen Augenblick auf der
Schaltfläche "Your Web Services Account" verweilen, dann zeigt sich ein
Kontextmenü... :)
Es gibt zwei verschiedene Schlüssel. Einmal die normale Access
Key ID, für die frei verfügbaren Amazon-Produktdaten und zum
anderen den geheimen Secret Access Key, mit dem man als
Shop-Profi alle personenbezogenen Daten wie Umsätze et cetera abrufen kann.
Uns genügt allerdings ersterer.
Schritt 3: Amazon-Listen anlegen
Die Datenbasis. Sicherlich ist es möglich die Produktinformationen, die
man auf der eigenen Seite darstellen möchte, in einer Datenbanktabelle oder
etwas ähnlichem zu pflegen, aber es stellt sich die Frage, warum lässt man
das nicht Amazon erledigen? Das Unternehmen bietet schließlich mit den
verschiedenen Listen (Lieblingslisten, Wunschlisten und Hochzeitslisten) die
perfekte Basis dafür. Zudem lassen sich dadurch alle benötigten
Informationen der darzustellenden Produkte in einem Rutsch abrufen.
Zum Anlegen z.B. einer Lieblingsliste, wie sie hier Verwendung findet,
meldet man sich mit seinem normalen Amazon-Account am Shop an und wechselt
auf die Seite "Mein Konto". Dort findet man im unteren
Bereich den Punkt "Ihr Profil @ Amazon".
Tipp: Verwenden Sie NICHT den Link "Neue
Lieblingsliste anlegen" BEVOR Sie sich ein Profil angelegt haben, denn sonst
schwimmt die Liste im Nirvana und Sie können Sie nicht mehr editieren oder
löschen!
Auf Ihrer Profilseite können Sie nun mehr oder minder bequem neue
Lieblingslisten anlegen und ihr Produkte zuordnen.
Schritt 4: Einstieg in die API
Amazon bietet über das
Resource Center der Amazon Web Services verschiedene Einstiegspunkte in
die Welt der Amazon-API. Hervorzuheben wären da vor allem folgende Punkte:
Technical Documentation als Online HTML, PDF oder Windows-Hilfedatei
Code Samples für PHP, C#, VB.NET, Java und Perl
und vor allem
AWSZone.com, ein interaktives Tool zur Bestimmung der Abfragesyntax.
Die Abfragetechnik der API wird auch bei Amazon mit den Titeln
REST oder SOAP bezeichnet. Mit REST (REpresentational
State Transfer) ist im Grunde gemeint, dass der Anwender eine auf
gewisse Weise strukturierte URL aufruft und als Antwort eine XML-Struktur
geliefert bekommt. SOAP (Simple Object Access Protocol) basiert auf
REST und erwartet das der Request, also der Aufruf, nicht über eine URL,
sondern bereits über eine XML-Struktur vonstatten geht.
In unserem Beispiel beschränken wird uns auf REST, denn eine URL lässt
sich auch mal schnell in einem Browser testen und kann ohne viel
Schnickschnack in jeder Sprache eingesetzt werden.
Schritt 5: Die Abfrage-URL bestimmen
Eine weitere kleine Hürde zur Abfrage der Produktinformationen einer
Amazon-Liste über die API stellt die eindeutige Listen-ID
dar. Nicht dass das Unternehmen dem Anwender im persönlichen Profil schon
einmal mitteilen würde wie diese lautet. Nein, man muss sie sich selbst
raussuchen. Schwer ist es zwar nicht, aber man muss halt wissen wie...
Hat man eine Lieblingsliste angelegt, kann man diese auch im Browser
aufrufen. So sieht die URL meine Lieblingsliste folgendermaßen aus:
http://www.amazon.de/zerbitBooks/lm/RTZKVLKPJQNFP/ref=...
In dieser URL steckt nun auch die Listen-ID. Es handelt sich dabei um die
hier 13-stellige Zeichenfolge RTZKVLKPJQNFP.
Mit dieser Information kann man nun daran gehen alle weiteren Parameter
zu bestimmen. Basis der Abfrage-URL ist folgende Seite...
http://ecs.amazonaws.de/onca/xml?Service=AWSECommerceService
... an die nun die notwendigen Parameter angehängt werden, wobei die
Reihenfolge im Grunde egal ist.
Man muss nun, wie oben bereits erwähnt, angeben, wer hier
abfragt. Dies geschieht durch das Anhängen der Access Key ID an die
URL, die hier nun SubscriptionID genannt wird:
...&SubscriptionID=XXXXXXXXXXXXXXXXXXXX
Als nächstes muss man festlegen was man abrufen möchte. Dies geschieht über
den Parameter Operation. In unserem Fall soll dies ein sog.
ListLookup sein, also der Abruf der Daten einer Liste:
...&Operation=ListLookup
Nun folgt die Angabe des Listentyps, denn bei Amazon gibt es wie erwähnt
drei verschiedene Listen. Lieblingslisten heißen im Amazon-Jargon
Listmania.
...&ListType=Listmania
Nun kommt die ermittelte Listen-ID:
...&ListID=RTZKVLKPJQNFP
Als Letztes wird die sog. ResponseGroup als
Parameter angehängt. Diese definiert welche Daten abgerufen werden sollen.
Es existieren zur Zeit an die 50 verschiedene Datengruppen, die jede für
sich unterschiedliche Daten beinhalten oder andere Datengruppen
zusammenfassen. Sie lassen sich im Parameter auch kombinieren.
Möchte man z.B. lediglich den Titel, den Autor und den
Hersteller der Produkte erfahren, so genügt die ResponseGroup Small.
Das volle Programm, mit allen Daten zu Preisen, Bewertungen, Rezensionen,
Bildern, ähnlichen Produkten et cetera, erhält man mit der Angabe von
Large.
In unserem Fall möchten wir die Stamminformationen der
Produkte und deren Bilder:
...&ResponseGroup=Small,Images
Die komplette URL sieht dann so aus (Zeilen umgebrochen):
http://ecs.amazonaws.de/onca/xml?Service=AWSECommerceService
&SubscriptionId=XXXXXXXXXXXXXXXXXXXX
&Operation=ListLookup
&ListType=Listmania
&ListId=RTZKVLKPJQNFP
&ResponseGroup=Small,Images
Man sollte darauf achten nicht zu viele Daten abzurufen,
denn mit der Anzahl der Informationen steigt immer auch die Dauer der
Anfrage und die Größe der zu empfangenden XML-Datei. Amazon geht darauf ein,
in dem es in der gelieferten XML-Struktur den Ast
RequestProcessingTime mitschickt, die aussagt, wie lange der
Zugriff gedauert hat.
Schritt 6: Verarbeiten der XML-Daten
Was nun noch bleibt ist, die hereinkommenden Daten zu
verarbeiten. Die gelieferte XML-Struktur ist so reich bestückt mit
Informationen, das ich hier jetzt mal darauf verzichte, sie auch nur
halbwegs abzubilden zu wollen. Neben einem Ast, der noch einmal den
erfolgten Request darstellt, sind vor allem die einzelnen ListItem-Äste
interessant, denn unter diesem hängen alle Informationen zu den in der
Lieblingsliste enthaltenen Produkte. In der aktuellen Version der API werden
z.B. bezüglich der Bilder sog. ImageSets mitgeliefert, über die man an die
URL's aller vorhandenen Produktbilder herankommt.
Wer sich mit server-seitigen Web-Programmiersprachen wie PHP,
ASP oder ASP.NET beschäftigt, wird wissen wie man das jeweilige
XMLHTTP-Objekt verwendet, mit dem man derartige XML-Requests abschicken und
den Response, also die ankommende XML-Struktur verarbeiten kann. In Sachen
ASP gibt hier auf zerbit.de auch den ein oder anderen
Artikel, der sich mit diesem Thema beschäftigt.
Natürlich kann man sich des Themas auch von Client-Seite
nähern, d.h. das Ganze in Javascript programmieren, wobei wir dann beim
momentanen Hyper-Word AJAX angelangt wären, das zur Zeit ja das ganze
"Web 2.0"
beschäftigt.