Mittwoch, 4. März 2009

Technorati-Zahlen auslesen mit: Google Docs, API, XML und XPath

Es wird mal wieder Zeit ein kleines Beispiel mit Google Docs vorzustellen.
Ich gehe auch hier wieder mit dem Tabellenmodul (Spreadsheets) von Google Docs an die Sache - oder wie die deutsche Bezeichnung heißt "Google Text und Tabellen".
Hey Google: Docs als Bezeichnung hätte auch gereicht und wäre weniger verwirrend ;-).

Als Aufgabe habe ich mir das auslesen der Zahlen ausgewählt, die von der Blogsuchmaschine Technorati erstellt werden.
Ich möchte aber auch einen kleinen und sehr einfach gehaltenen Einblick in die Themen: API, XML und XPath geben, da ich mit diesen Technologien in diesem Beispiel arbeite.

Das schöne ist, dass man kein Programmierer sein muss, um mit den angesprochenen Technologien arbeiten zu können. Das die Themen allerdings für einen unerfahrenen Anwender auch erst mal "verdaut" werden müssen, ist mir dabei aber auch klar.
Auch bei diesem Beispiel geht es mir weniger um das Endergebnis (Technorati-Statistik) sondern ich würde mir wünschen, dass das grundlegende Interesse zum Wissenserwerb geweckt wird und man ein wenig experimentiert.

Hinweis: Ich arbeite mit einigen Links die ich über das Tool "Apture" einbinde. Diese Links werden nur angezeigt, wenn JavaScript aktiviert ist.
Ob die Links auch in allen Off- und Online-Feed-Readern angezeigt werden, weiß ich nicht.
Also, mal einfach wieder mein Blog besuchen ...
Das Tool von Apture ist mittlerweile etwas erweitert worden, darüber gibt es später ein eigenes Blog-Post.

Und nun rein in die Praxis.
Voraussetzung für mein Google-Docs Beispiel ist:
  • man besitzt einen eigenen Technorati-Account und
  • holt sich darüber seinen eigenen API-Key
Als erstes ein Screenshot des Spreadsheets und die Daten die ich extrahiere:

Technorati-Statistik-Google-Docs
Zur Ermittelung der Daten nutze ich wieder die Docs-Funktion =ImportXML().
Diese Function benötigt im ersten Teil die Datenquelle (http://api.technorati.com/bloginfo?key=Mein-API-KEY&url=noodlegei.blogspot.com) und im zweiten Teil den sogenannten XPath-Teil (//tapi/document/result/weblog/rank).

Folgende Formeln trage ich in die entsprechenden Zellen ein:

Zelle B3: =importxml("http://api.technorati.com/bloginfo?key=Mein-API-KEY&url=noodlegei.blogspot.com";"//tapi/document/result/weblog/rank")

Zelle C3: =importxml("http://api.technorati.com/bloginfo?key=Mein-API-KEY&url=noodlegei.blogspot.com";"//tapi/document/result/weblog/inboundblogs")

Zelle D3: =importxml("http://api.technorati.com/bloginfo?key=Mein-API-KEY&url=noodlegei.blogspot.com";"//tapi/document/result/weblog/inboundlinks")

Zelle E3: =importxml("http://api.technorati.com/bloginfo?key=Mein-API-KEY&url=noodlegei.blogspot.com";"//tapi/document/result/weblog/lastupdate")

Das war es auch schon.
Nun geht es weiter zu einigen Erläuterungen der eingesetzten Technologien.

Zu Technorati:

Die Blogsuchmaschine Technorati hat ein eigenes Rankingverfahren:
  • Anzahl der Blogs die auf das eigene Blog verlinken
  • Anzahl einzelner Links die auf das eigene Blog verlinken
  • ein Zeitkomponente
Daraus ergibt sich ein Technorati-Ranking, das als eine Zahl (Rank) dargestellt wird.
Entsprechende Widgets die diese Zahlen in der Blog-Seitenleiste anzeigen, kann man sich als Technorati-Accountinhaber herunterladen.

Über APIs:

APIs sind Programmierschnittstellen, durch die der Datenanbieter einen begrenzten Zugriff auf sein System zulässt.
Der API-Anbieter bestimmt z.B. :
  • Welchen Daten abgerufen werden dürfen
  • Wie auf die Daten zugegriffen werden darf (z.B. nur Lesender Zugriff)
  • Wie häufig die Daten automatisiert abgerufen werden dürfen (Tageslimit)
Die Technorati-API die ich nutze lässt nur:
  1. einen lesenden Zugriff zu
  2. die Daten sind: die Anzahl der linkgebenden Blogs, Anzahl der einzelnen Links, das Gesamt-Ranking und das letzte Daten-Update
  3. maximal 500 API-Aufrufe pro Tag werden zugelassen
Zum eigenen API-Key geht es hier lang: Technorati API-Key anfordern.

Der Aufruf über die API kann auch mit der Eingabe im Browser getestet werden:

http://api.technorati.com/bloginfo?key=Dein-API-KEY&url=noodlegei.blogspot.com

So sieht die Ausgabe der Technorati XML-Datei im Browser aus:

Technorati-XML-AusgabeÜber XML:

Das Format XML wird u. a. für den Austausch von Daten zwischen Computersystemen eingesetzt. Ein bekanntes Datenaustausch-Format werden die meisten bestimmt kennen, die CSV-Dateien (mit Komma getrennte Daten, die z.B. in EXCEL automatisch sehr einfach eingelesen werden können).
XML baut jedoch auf eine hierachische Struktur auf.


Über XPath:

Um auf die hierachische Datenstruktur von XML-Daten zugreifen zu können, benötigt man Grundkenntnisse in der Abfragespache XPath.

Um sich das etwas besser vorstellen zu können, stellt man sich die Struktur der XML-Datei wie die Auflistung der Verzeichnisse auf dem eigenen PC vor.
(wie im grafischen Datei-Manager (Windows-Explorer) oder ein Buch-Inhaltsverzeichnis (1, 1.1, 1.1.2 usw.)

Der XPath zum eigentlichen Wert den man auslesen möchte, würde bspw. dem Pfad zu einer Datei auf dem PC entsprechen: C:\Test\test-02\meineDatei.txt
Link zum englischen XPath-Tutorial.

Anmerkung: Mit XPath kann man aber auch Werte aus HTML-Dateien auslesen.

In meinem Google-Docs Beispiel lautet der Pfad für die Zahl der erkannten Blogs:

//tapi/document/result/weblog/inboundblogs

Der Rückgabewert wird dann automatisch in das Spreadsheet übernommen.

Technorati-XML In der freien Web-Wildbahn findet man noch wesentlich kompliziertere XML-Files und z.T. sind die Daten die man gerne auslesen möchte, nicht gut bzw. korrekt struktuiert.

Das auslesen der FeedBurner-Daten mit Google-Docs - ohne API-Key - hatte ich ja bereits gepostet.

Ich hoffe, dass ich vielleicht ein wenig die Neugierde zu diesem Thema wecken konnte und wünsche ein "Happy Testing ...".

NoodleGei.blogspot.com

Ähnliche Beiträge zum Thema/Kategorie:



8 Kommentar(e) zum Beitrag:

Andy hat gesagt…

Die Qualität der Zahlen von Technorati hat aber in der letzten Zeit drastisch nachgelassen. Seit Wochen kriegen die es nicht gebacken, das deren Index die aktuellen Blogpostings automatisch nachlädt sobald sie "gepingt" werden, und selbst wenn man dort manuell pingt tut sich nix. Dementsprechend fehlen dann sicher einige der Blogreaktionen, eben weil diese Postings nicht indiziert wurden. Seltsamerweise tut es mein Tambon-Blog immmer, beim Reiseblog nach einigen Tagen, und mindestens ein Blog wo ich referenziert wurde schon seit >40 Tagen nicht. Schau doch mal auf die Support-Seite wieviele dort um manuelle Updates bitten weil sich nix tut.

Wenn die das nicht bald hinbekommen dann sehe ich schwarz für die Zukunft des Unternehmens. Das Indizieren von Blogpostings ist ja die Basis von denen, und wenn schon das nicht mehr tut...

NoodleGei hat gesagt…

Hallo Andy,
nicht nur Technorati scheint so seine Probleme zu haben. Auch die Google-Blogsearch hält z.Z. nicht das, was ich mir davon versprochen hatte. Evtl. stehen da aber größere Veränderungen an, inkl. negativer Seiteneffekte.

Überhaupt ist das Thema WeboMetrie noch nicht ausgereift.

PS: Ich sehe, dass du "Google Code Projekt" nutzt.
Hast du dich schon mit der Google AppEngine beschäftigt?
Da du einiges im GIS-Umfeld nutzt, wie sieht es mit embedded Google Earth - statt Maps - aus ?

NoodleGei hat gesagt…

@All

In meinem vorherigen Kommentar habe ich einige Begriffe mit einem Apture-Link versehen.

Um diesen Link - ist ein kleines Symbol davor - zu sehen und aufrufen zu können, muss im Browser JavaScript aktiviert sein!

Seht Ihr diese Links überhaupt?

Zu den Begriffen "WeboMetrie, GIS und Google Earth" habe ich diese Links eingefügt.

Aber manchmal scheinen die Links NICHT angezeigt zu werden (nur bei mir?).
Falls die drei Links bei euch nicht angezeigt werden, gebt mir bitte ein Feedback.
Ich setzte mich dann mal mit Apture in Verbindung.

Andy hat gesagt…

Ich benutze Google Code bislang nur als Versionskontrollsystem fuer mein Tambon-Projekt um Daten und insbesondere die offiziellen Veroeffentlichungen zu den Provinzen und anderen Unterteilungen zu sammeln und verwalten. Der Programmierteil ist dabei nur ein geringen Teil, das meiste sind Daten-XMLs, und programmiert ist in C#.

Interessant wird es vielleicht mal, wenn ich mehr Geo-Koordinaten in den XMLs eingetragen habe, Karten direkt aus diesen XMLs zu erzeugen. Aber das ist noch Zukunftsmusik, deswegen sind die Karten in dem Blog auch mehr zur Erlaeuterung und sind daher eher einfach gehalten.

Ach ja, die Links erscheinen hier bei mir und tun's auch.

NoodleGei hat gesagt…

Andy, kann man über Google-Code auch z.B. JavaScript-Files hosten lassen und dann über das eigene Blog aufrufen lassen?

Bei Blogger fehlt ja leider die Möglichkeit (noch?, Gdrive) externe, eigene JS-Files ablegen zu können.
Diverse File-Freehoster will ich nicht nutzen.

Dein Tambon-Projekt ist schon erstaunlich ;-).
Ein Deutscher, der in D lebt, erstellt und sammelt Informationen über kommunale Strukturen in Thailand und publiziert in englischer Sprache.
Du scheinst Land und Leute wirklich zu lieben!

Andy hat gesagt…

Nun, man kann bei den auf Google Code gehosteten Dateien auch an die Quelldatei kommen, z.B. geocode84.xml. Ob aber JS-Files dann den richtigen MIME-Type im Browser bekommen und dann noch funktionieren weiss ich nicht. Aber fuer solche Zwecke verwende ich dropbox, das ist wohl das was GDrive werden soll, nur jetzt schon vorhanden.

Man koennte auch sagen, dass ich bei dem Tambon-Projekt ein wenig verrueckt bin :-) Aber es macht einfach Spass, Dinge herauszufinden die es zumindest in Englisch in dieser Form noch nirgends zu finden gibt. Nur schade dass ich noch keinen Mitstreiter gefunden habe, insbesondere ein Thai wegen meiner noch sehr geringen Sprachkenntnisse waere toll. Aber irgendwann wird so jemand sicher ueber mein Blog stolpern.

Geist und Gegenwart hat gesagt…

Hallo NoodleGuy,

ein super Post! Das macht Lust auf selber ausprobieren. The Guardian hat eine Serie angefangen, bei der sie mit Google Docs US-Statisiken zugänglich machen, z.B. zu Menschen ohne Krankenversicherung (in % pro Bundesstaat). Leider kann man nicht hinter die Zellen gucken, aber es ist aber sicher auch per LookUp gemacht. Sie geben aber immer die Quelle an, z.B.: http://www.census.gov/hhes/www/hlthins/hlthin07/hlthtables07.html - finde ich eine interessante Nutzung der Technologie. Und beinahe Kinderleicht, wie du auch zeigst.

Gruß,

G

NoodleGei hat gesagt…

Hi FlickBlog.
Vielen Dank für das Lob.
Als der Guardian das veröffentlicht hat, war es bereits Minuten später auf meinem Radar ;-).
Auch was die "New York Times" mit ihren APIs anbietet, kommt ganz zukunftsträchtig daher.
"Jarvis, WwGd?"

PS: Nicht NoodleGuy, war bereits im Google-Index. Deshalb musste ich auf NoodleGei ausweichen, da keine Treffer vorhanden waren. Ich hatte dabei ein eigenes "Branding" im Hinterkopf.
Ich hätte mir nur einen etwas seriöseren Namen aussuchen sollen *grins*.

Kommentar veröffentlichen

Kommentare bitte fair und im rechtlich erlaubten Rahmen verfassen!
Die Kommentare und ggf. hinterlassene URLs werden von mir überprüft. Kommentare die für blaue Pillchen, Glücksspiele, bestimmte Bilder/Videos, Abzocker-Dienste usw. werben, werden gelöscht.

Kommentare von SEO-Link-Builder sind ebenso unerwünscht!

In den Kommentare können die HTML-Tags für:
kursiv = <i>Testwort</i>
fett = <b>Testwort</b>
Links = <a href="http://www.deineURL.de/">Link Text</a>
genutzt werden. Einfach die o.g. Beispiele kopieren und mit den eigenen Werten ersetzen.

  © Blogger template Columnus by Ourblogtemplates.com 2008

Back to TOP