Google Web API
Google Web API
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.