Az egyik legegyszerűbb a google által kínált api-k közül a web api. Ebbe a felületbe három szolgáltatás tartozik bele. Ezek a keresés, a cache-elt oldalak elérése, illetve a helyesírás ellenőrző (google.com -ról ismert Did you mean dolog). Ahhoz, hogy igénybe vehessük az api-t, először regisztrálnunk kell magunknak egy google accountot, majd igényelni kell egy licence key-t. Ezzel a kulccsal napi 1000 kérést hajthatunk végre.

A szolgáltatások elérése SOAP-al történik. Java illetve .NET nyelvekhez példaprogramokat is letölthetünk, illetve az osztálykönyvtárakat is a könnyebb eléréshez.
Php-ben a beépített SOAP kiterjesztés áll a rendelkezésünkre. Ahhoz, hogy el is érjük ezt a kiterjesztést, linuxon az --enable-soap kapcsolót kell használni, illetve a php.ini-ben szerepeltetni kell az extension-oknál. Első dolgunk, hogy példányosítunk egy SOAP klienst.

$client = new SoapClient('http://api.google.com/GoogleSearch.wsdl');

A kliensnek kezdésként meg kell adnunk a web szolgáltatást leíró fájl címét. Ebből fogja "tudni", hogy milyen szolgáltatások, milyen függvények hívhatók meg és azokra mit kell visszakapnia.

A példányosítás után már elég könnyű dolgunk van, csak a megfelelő függvényeket kell meghívnunk a kliensen keresztül. A visszatérési érték mindhárom esetben más típusú.

A helyesírás ellenőrző

try
{
    $params = array(
        'key'    => '',        # licence key                   
        'phrase' => 'deadlime' # kifejezés
    );
    $response = $client->__soapCall('doSpellingSuggestion', $params);
    
    # mivel wsdl módban vagyunk, ezért akár közvetlenül is meghívhatnánk a függvényt
    //$response = $client->doSpellingSuggestion(...);
}
catch(Exception $e)
{
    die($e->getMessage());
}

A $response string típusú, ami vagy üres vagy a felajánlott szót tartalmazza. Magyar szavakra sajnos nem működik. Közvetlen hívás esetén a $params tömb helyett "normál" paraméterezéssel kell megadnunk az adatokat.

A cache-elt oldal

try
{
    $params = array(
        'key' => '',                      # licence key
        'url' => 'http://www.deadlime.hu' # az oldal címe, amiről a google által tároltat szeretnénk megkapni
    );
    $response = $client->__soapCall('doGetCachedPage', $params);
    $response = base64_decode($response);
}
catch(Exception $e)
{
    die($e->getMessage());
}

A cache-elt oldalt base64-ben kódolt szövegként kapjuk meg.

A keresés

try
{
    $params = array(
        'key'        => '',          # licence key
        'q'          => 'deadlime',  # keresési kifejezés
        'start'      => 0,           # melyik elemtől kezdve adja vissza a találatokat
        'maxResults' => 10,          # mennyi találatot adjon vissza
        'filter'     => true,        # eredmény szűrése
        'restrict'   => 'countryHU', # megkötések
        'safeSearch' => false,       # felnőtt tartalmak szűrése
        'lr'         => 'lang_hu',   # nyelvi megszorítások
        'ie'         => '',          # bemeneti karakterkódolás (alapértelmezett: UTF-8)
        'oe'         => ''           # kimeneti karakterkódolás (alapértelmezett: UTF-8)
    ); 
    $response = $client->__soapCall('doGoogleSearch', $params);
}
catch(Exception $e)
{
    die($e->getMessage());
}

A $response ebben az esetben egy objektum, benne minden fontos adattal. A "filter" illetve a "restrict" sor elsőre valószínűleg nem egyértelmü. A "filter" bekapcsolásával a duplikált találatokat lehet kiszürni. A "restrict" értékéül egy kifejezést adhatunk. Ebben a kifejezésben megadhatjuk, hogy mely oszrágokra, illetve mely témakörökre korlátozzuk a keresést.

Kapcsolódó linkek: