C#: Die Google Search API benutzen

googlesdk

Seit dem Google die SOAP API für Google Search eingestellt hat, läuft alles über die neue Google Ajax API. Dabei werden sogenannte JSON-Objekte bei Anfragen über die Google Ajax API übergeben. Leider gibt Google keine Beispiele für , sondern nur für PHP, Java, Flash, Python und Perl, wie man die Google Ajax API benutzt. Aus diesem Grund habe ich mich dazu entschlossen ein eigenes kleines Tutorial zu schreiben, wie man einfach und schnell Google Suchergebnisse in CSharp bekommt.

Hierzu gibt es bereits eine hilfreiche Dotnet-Library namens GAPI.NET, die einem das ungewohnte Hantieren mit JSON-Objekten erspart. Der Vorteil des Einsatzes einer externen Library ist, dass man sich nicht um das Ansprechen von Google kümmern muss und auch kein Einarbeiten in JSON notwendig ist. Wer sich trotzdem nicht auf fremden Code verlässt kann alles selbst nachvollziehen, denn GAPI ist Open Source.

Nachdem GAPI.NET heruntergeladen wurde muss die Assembly nur noch als Referenz in ein Visual Studio Projekt und die Using-Direktive “Gapi.Search” hinzugefügt werden. Jetzt geht es auch schon mit einem Beispiel-Codeschnipsel los, wie wir unsere Antworten von Google über C# bekommen.

SearchResults googleResults = Searcher.Search(SearchType.Web, "Stephan Hawking", 0);
 
for (int pageIndex = 0; pageIndex < googleResults.EstimatedResultCount; pageIndex = pageIndex + 8)
  {
      googleResults = Searcher.Search(SearchType.Web, keyword, pageIndex);
 
      foreach (SearchResult item in googleResults.Items)
         {
              Console.WriteLine(item.Title + " " + item.Url);
         }
   }

Dieser Code bewirkt, dass eine Suchabfrage nach “Stephan Hawking” gestartet wird. Bei jeder Suchanfrage spuckt GAPI bzw. Google nur 8 Ergebnisse aus, sodass jedesmal die Search-Methode erneut aufgerufen werden muss, wenn man die nächsten 8 Suchergebnisse haben möchte. Um zu verdeutlichen, wie die Search-Methode aufgerufen werden muss habe ich hier ein weiteres Code-Beispiel, die dies verdeutlichen soll.

// Gibt die zweite Seite mit 8 Suchergebnissen aus
Searcher.Search(SearchType.Web, "Stephan Hawking", 8)
 
// Gibt die dirtte Seite mit 8 Suchergebnissen aus
Searcher.Search(SearchType.Web, "Stephan Hawking", 16)
 
// Gibt die vierte Seite mit 8 Suchergebnissen aus
Searcher.Search(SearchType.Web, "Stephan Hawking", 24)

Jetzt dürfte jedem klar sein, wie er GAPI bis zum letztem Suchergebnis ausquetscht. GAPI kann aber nicht nur die Google Web Search API ansprechen, sondern alle anderen APIs wie beispielsweise die Google Maps API ansprechen. Hierzu muss in der Search-Methode der gewünschte Search-Typ, der als Enum definiert ist, eingestellt werden.

Von | 2010-02-28T02:46:50+00:00 28. Februar 2010|Programmierung|6 Kommentare

Über den Autor:

Ich bin ein technikbegeisterter Blogger, nebenberuflich (Fern-)Student der Wirtschaftsinformatik, hauptberuflicher Webentwickler und schreibe auf Bitpage.de gerne Technik-News, Tutorials und Reviews. Meine favorisierten Themen sind #Software, #Internet und digitale Fotografie.

6 Kommentare

  1. René Mrz 9, 2010 um 16:18 Uhr

    Hallo,

    danke für diesen Beitrag – wusste gar nicht, dass es so schön möglich ist. Ich denke, da kann man in Zukunft doch nette schöne Erweiterungen für seine eigene Webseite bauen.

    Gruß
    Falcon ausm WMP

  2. Timo Apr 14, 2010 um 10:34 Uhr

    Hi,

    super Info, vielen Dank! Weisst Du ob die Anzahl der Abfragen eingeschränkt ist wie bei der alten google API (waren glaube ich 1000 hits pro Tag)?

    Grüße,

    Timo

  3. Tobi Apr 24, 2010 um 13:14 Uhr

    soweit ich weiß gilt dieses Limit noch. Aber ich bitte dich, wer macht
    schon 1000 Anfragen am Tag? ;D

    zumindest ist es so gewesen, als ich damit in einem Google-Map Projekt
    von mir gearbeitet habe.

  4. Markus Jul 6, 2010 um 13:56 Uhr

    Hallo, schönen Dank für Dein Beispiel. Funktioniert gut nachdem man < durch ein < ersetzt und die Variable keyword deklariert.

    Doch eine Frage bleibt mir verborgen. Wie kann ich wählen, welches Google ich verwenden möchte? Ich vermute, es wird bei Google.com gesucht. Wenn ich nun aber bei Google.at oder bei Google.ch suchen möchte? Wie kann ich das realisieren?

    Seit mir herzlichst Gegrüsst
    Markus

  5. Markus Jul 25, 2010 um 18:51 Uhr

    Hallo, habe ein bischen weiter gespielt. Der Code scheint mir einige Tücken zu haben.
    Wenn ich nämlich mehr als ca 70 Suchresultate abfrage, kommt eine Fehlermeldung. Hat sich hier schon jemand damit befasst?
    Viele Grüsse

  6. Japhet Sep 23, 2011 um 11:39 Uhr

    Hallo Ich hab es genauso getan wie bei dir doch wenn ich es debugge erhlte ich eine Fehlermeldund obwohl zuvor alles korrekt brauche hilfe

    tschüssikowski

    ps: was soll ich für ein keyword eingeben

Hinterlasse einen Kommentar