Google-API
Google anzapfen

DeveloperIT-ProjekteSoftware

Mit der Google-Web-API können Entwickler eigene Anwendungen auf Basis der Suchmaschine programmieren. Internet Pro zeigt, wie Sie eigene Google-Tools mit Perl und PHP entwickeln.

Eigene Anwendungen

Google-API

Mit Google können Sie weit mehr, als die schlichte Startseite mit dem Suchfeld erahnen lässt. Profis nutzen die Programmierschnittstelle (Application Programming Interface, API) von Google, um eigene Anwendungen zu entwickeln. Aber auch ohne die API können Programmierer die Werkzeuge von Google anzapfen. Denn die Schnittstelle erlaubt es beispielsweise nur, die von Google indizieren Seiten zu durchsuchen. Auf Zusatzdienste wie Google News ist bislang über die API noch kein Zugriff möglich.

Hier schafft eine Technik Abhilfe, die Scraping genannt wird. Dabei wird ohne Zutun der Programmierschnittstelle mit einem Programm oder Skript die Information direkt aus dem HTML-Code einer Seite ausgelesen.

Internet Pro zeigt, wie Sie mit und ohne Google-Web-API mehr aus Google herausholen.


Vorbereitung

Google-API

Bevor es losgeht, laden Sie sich das Developer?s Kit von www.google.com/apis/download.html herunter. Wichtig für die Benutzung der Google-Web-API ist, dass Sie sich für ein Google-Benutzerkonto anmelden. Sie erhalten dann an Ihre angegebene E-Mail-Adresse einen Registrierungsschlüssel, den Sie später benötigen, um mit Ihren Skripts auf die Google-API zuzugreifen. Der Schlüssel muss mit jedem Abfrageskript mitgeschickt werden und erlaubt es, bis zu 1000 Abfragen pro Tag abzusetzen.


WSDL nutzen

Google-API

WSDL steht für Web Service Description Language, ein XML-Format, mit dem Webservices beschrieben werden können. Im Entwicklungspaket von Google finden Sie eine Datei GoogleSearch.wsdl, die beschreibt, welche Dienste über die Google-API zur Verfügung stehen. Sie nennt auch die dazugehörigen Methodennamen und beschreibt, welche Argumente von der Programmiersprache Ihrer Wahl übergeben werden sollten.

Deponieren Sie diese Datei GoogleSearch.wsdl einfach im selben Verzeichnis auf Ihrem Webserver, in dem auch die von Ihnen geschriebenen Skripts liegen. So ist ein leichter Zugriff auf diese Datei sichergestellt.


Google-API-Basics

Google-API

Der Kern jeder Google-Anwendung ist die Abfrage, die daraufhin Daten zurückliefert. Eine typische Abfrage mit einem Perl-Skript sieht so aus:

my $results = $google_search ->
doGoogleSearch( key, query, start,
maxResults, filter, restrict, safeSearch,
lr, ie, oe);

Innerhalb der runden Klammern stehen in der Regel Variablen, Zahlen oder Boolesche Werte (wahr oder falsch). In diesem Beispiel wurden die Namen der Argumente an Stelle ihrer möglichen Werte eingesetzt, damit ihre Definitionen klar werden. Hier die Erklärungen:

key Hier steht Ihr Google-Web-API-Entwicklerschlüssel.
query Dies ist die Abfrage. Sie besteht aus Suchbegriffen, Phrasen und speziellen Schlüsselwörtern.
start Auch Offset-Wert genannt. Der ganzzahlige Wert gibt an, bei welchem Suchergebnis begonnen wird. Hiermit wird ermittelt, welche zehn Suchergebnisse zurückgegeben werden sollen. Wird hier 16 eingegeben, gibt die API die Ergebnisse 16 bis 25 zurück.
maxResults Diese Ganzzahl gibt an,
wie viele Ergebnisse die API maximal zurückgeben soll. Die API kann jedoch nur zehn Ergebnisse auf einmal liefern. Mögliche Werte sind also 1 bis 10.
filter Dieser Boolesche Wert bestimmt, ob Ihre Ergebnisse auf Ähnlichkeit überprüft werden sollen. Google kann Ergebnisse, die sich sehr stark ähneln, automatisch herausfiltern.
restrict Mit dieser Option kann die Suche auf ein bestimmtes Thema oder ein bestimmtes Land eingeschränkt werden. Google bietet im Moment vier Themenbereiche an: die US-Regierung (unclesam), Linux (linux), Macintosh (mac) und FreeBSD (bsd). Die Liste der Länder finden Sie in der Dokumentation der Google Web API.
safeSearch Mit dieser Option schalten Sie die Safesearch-Funktion ein oder aus. Der Boolesche Wert gibt an, ob die Ergebnisse gegebenenfalls auch fragwürdige, eventuell jugendgefährdende Inhalte enthalten dürfen.
lr Die Suche kann auf eine bestimmte Sprache beschränkt werden (language restrict). lang_de steht beispielsweise für Deutsch, lang_en für Englisch. Mit einem Pipe-Zeichen (|), das für »oder« steht, können Sie mehrere Sprachen bestimmen.
ie Hiermit wird festgelegt, welches Zeichenformat (input encoding) verwendet werden soll.
oe Dies steht für das Ausgabeformat. Für ie und oe gilt mittlerweile, dass Daten prinzipiell nur noch im UTF-8-Format (utf8) ausgetauscht werden.


Die erste Abfrage

Google-API

In einem Beispiel sehen Sie, wie eine tatsächliche Abfrage aussehen kann. Nach dem persönlichen Google-Schlüssel, den Sie nach der Registrierung erhalten, folgt der Suchtext, hier »Internet Professionell«. Es sollen beginnend mit dem Ergebnis 100 insgesamt 10 Ergebnisse zurückgegeben werden. Die Filterung und Safesearch sind aktiviert.

my §results = $google_search ->
doGoogleSearch("12BuCK13mY5hoE/34Knock@ttH3DooR",
"+internet +professionell" , 100, 10, "true", "",
“true”, “”, “utf8″,”utf8”);

Dabei unterstützt die Google-Web-API zusätzlich zu AND und OR auch spezielle Schlüsselwörter, mit denen Sie Ihre Suchanfragen verfeinern können. Ein Beispiel ist die Begrenzung der Suche auf den Seitentitel mit intitle.


API mit Perl programmieren

Google-API

Um die Google-Web-API zu programmieren, kommt wiederum Perl zum Einsatz. Der Code im Listing 1 (auf der Heft-CD im Bereich Listings im Archiv 1004api.zip) enthält ein einfaches Beispiel für den Zugriff auf Googles Programmierschnittstelle und stellt die Basis für weitere, komplexere Abfragen dar. Das Skript wird von der Kommandozeile aus gestartet:

$ perl googly.pl "Ihre Suchbegriffe"


PHP-Abfrage

Google-API

Auch mit PHP lässt sich die Google-Web-API nutzen. Im Listing 2 auf der Heft-CD finden Sie ein PHP-Skript, das im Zusammenspiel mit dem Nusoap-Modul (dietrich.ganx4.com/nusoap) eingesetzt wird. Die Verbindung der beiden Komponenten stellt ein mächtiges Werkzeug für die Programmierung der Google-Web-API dar.

Zunächst wird über require_once(‘nusoap.php’); die Nusoap-Bibliothek eingebunden. Im nächsten Schritt legen Sie die Parameter fest und fügen Ihren persönlichen Google-Web-API-Schlüssel ein. Dann legen Sie einen neuen Soap-Client an und füttern ihn mit der Datei GoogleSearch.wsdl von der Google-API-Website. Die eigentliche Abfrage erledigt dann die Zeile

$results = $soapclient->call('doGoogleSearch',$parameters);

Zum Schluss folgt die Ausgabe der Ergebnisse und eine Alternativversion für den Fall, dass die Suche keine Ergebnisse geliefert hat.

Das Skript rufen Sie über den Browser wie ein CGI-Skript auf. Es wird ein Argument mit dem Namen query übergeben. Fügen Sie nach dem Gleichheitszeichen einen Suchbegriff Ihrer Wahl ein. Im Beispiel wird »testticker« gesucht:

http://localhost/googly.php?query=testticker

Die Beispiele mit Perl und PHP sollen Ihnen einen Eindruck vermitteln, wie Sie auf die Programmierschnittstelle von Google zugreifen können. Doch einige Dienste von Google bleiben Ihnen dabei versperrt. Wie Sie zum Beispiel Suchergebnisse aus Google News und Google Groups auf unkonventionelle Art grabben und weiter verarbeiten, erfahren Sie im folgenden Abschnitt.


Google-Quellcode auslesen

Google-API

Auch ohne die Google-API können Sie auf die Funktionen der Suchmaschine zugreifen. Das geschieht, indem Sie den HTML-Quellcode auslesen (Scraping) und beispielsweise in eine CSV-Datei (Comma Separated Values) zur weiteren Verarbeitung speichern.

Wieso dieser Weg »zu Fuß«, anstatt gleich die Google-Web-API zu benutzen? Mit Scraping haben Sie beispielsweise Zugriff auf Google News, Google Catalogs und Google Groups, deren Abfrage die Programmierschnittstelle bisher noch nicht unterstützt. Dabei gibt es auch einige Einschränkungen. Alle Scraping-Programme basieren auf dem Format der Suchergebnisse, wie sie Google zum Zeitpunkt der Entwicklung dieser Tools verwendet hat. Ändert sich das Format, müssen unter Umständen auch die Scraping-Programme angepasst werden. Außerdem ist es nicht erlaubt, automatisierte Scraping-Tools ohne die Verwendung der Google-Web-API einzusetzen. Dies verstößt gegen die Geschäftsbedingungen von Google.

Noch ein Tipp: Damit Ihre per Scraping erhaltenen Suchergebnisse nicht zu knapp ausfallen, stellen Sie bei Google unter Einstellungen die Anzahl der Ergebnisse auf 100 Resultate pro Seite.


Google Groups grabben

Google-API

In einem Beispiel sehen Sie, wie Sie mit Perl Suchergebnisse einer Abfrage der Google Groups in einer CSV-Datei speichern. Zu Beginn führen Sie eine Suche bei Google Groups nach Ihren Suchbegriffen durch. Hier beispielsweise die Abfrage nach »Perl«, beschränkt auf eine Newsgroup namens google.public.web-apis:

perl group:google.public.web-apis

Sortieren Sie die Ergebnisse nach Datum, das erleichtert es später, das letzte Änderungsdatum Ihrer Ergebnisse zu ermitteln. Sichern Sie diese Seite lokal und geben Sie ihr einen aussagekräftigen Namen, beispielsweise groups.html.

Im Listing 3 auf der Heft-CD finden Sie ein Perl-Skript, das das Umwandeln in eine CSV-Datei übernimmt. Das Skript rufen Sie über die Kommandozeile auf. Geben Sie hierfür die Datei mit den zuvor gesicherten Suchergebnissen und den Namen der CSV-Datei an, in die die Ergebnisse gesichert werden sollen. Hier der Aufruf:

$ perl groups.2csv.pl < groups.html > groups.csv

Wenn Sie die abschließende spitze Klammer und die Angabe der CSV-Datei weglassen, dann wird das Ergebnis auf dem Bildschirm ausgegeben. Fügen Sie dagegen eine zweite spitze Klammer an, dann wird eine neue Datei angelegt, falls noch keine vorhanden ist, eine bereits existierende CSV-Datei dieses Namens wird dagegen geöffnet, um weitere Einträge hinzuzufügen.

Die CSV-Daten lassen sich beliebig erweitern und weiter verarbeiten. Denkbar sind etwa die Aufbereitung für eine Link-Liste zum Thema Perl & Google-Web-API oder eine Weiterverarbeitung in Excel. Natürlich sollten Sie die Daten durch regelmäßige Abfragen aktuell halten.


Fazit

Google-API

Auf die Google-Web-API greifen Entwickler mit einer Programmiersprache ihrer Wahl sehr leicht und effizient zu. Wer sich einmal in die Dokumentation von Google hineinliest und sich mit den Parametern und Schlüsselwörtern beschäftigt, wird schnell erkennen, wie viele Möglichkeiten sich hier auftun. Eine Menge Anwendungsbeispiele sind denkbar. Ob Sie nun eine Suchfunktion für Ihre eigene Website aufsetzen wollen, indem Sie die Suche auf die eigene Domain beschränken, oder eine Suche nach Dateierweiterungen oder archivierten Seiten anbieten möchten ? die Einsatzszenarien sind vielfältig.