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: