TUTORIELS 
Introduction à l'API Google avec PHP

Page 1 | 2 | 3

Insérer facilement un moteur de recherche Google au sein des pages de son site grâce à PHP.
 (2 décembre 2002)
 

Avec le code précédent, vous avez accès à toutes les fonctionnalités de recherche Web de Google, mais pour l'heure, l'API ne donne pas accès à Google Groups, Google Images ou Google News.

Nous avons principalement utilisé une procédure sur les trois fournies par l'API: doGoogleSearch(), dont l'accés nous est donné en instanciant un client SOAP avec le constructeur fourni par NuSOAP:

new soapclient("http://api.google.com/search/beta2");
.

Il ne reste plus qu'à lancer un appel vers le serveur SOAP, avec la méthode call() de la classe soapclient. Cette classe, comme on le voit, prend 4 arguments: le nom de la procédure invoquée, un tableau contenant les paramètres de cette procédure ($params, définie auparavant), un nom d'espace et une valeur SOAPAction (urn:GoogleSearch dans les deux cas).

Le tableau $params contient l'ensemble des paramètres suivants (comme décrits dans la documentation en ligne):
- la clé personnelle Google (obligatoire),
- les mots à rechercher,
- la page de résultats à afficher (le nombre de résultats étant limité à dix par page, ce paramètres permet de facilement intégrer le gestion de liens "page suivante / page précédente"),
- le nombre maximal de résultats à afficher par page (dix au maximum, donc),
- un booléen indiquant si le filtre de pages similaires est activé ou non,
- le domaine de restriction (cela peut être une langue, un pays (.fr, .jp...)),
- un booléen indiquant si l'on souhaite voir des résultats "adultes" ou non, la langue utilisée (ici, lang_en|lang_fr nous limite aux résultats en langue anglaise OU française), et deux paramètres d'encodage entrée/sortie qui sont désormais à éviter (toutes les entrées/sorties se font maintenant à la norme UTF-8) mais qui restent bizarrement obligatoires (selon nos tests).

Le résultat de l'appel à doGoogleSearch() est un tableau associatif (grâce à NuSOAP), d'où il ne nous reste plus qu'à tirer les informations. Celles-ci sont accessibles depuis le tableau $result sous la forme:

$result['nomDeLaValeur'].

Les valeurs accessibles sont, entre autres, estimatedTotalResultsCount, URL, snippet (aperçu de la page), title et bien d'autres, ce qui permet de configurer exactement ce que l'on veut afficher et où on veut l'afficher.

Il ne nous reste donc plus qu'à utiliser $result comme bon nous semble. Tout d'abord, nous faisons en premier appel au paramètre faultstring, ajouté par NuSOAP pour renvoyer un message d'erreur lisible.
Ensuite, nous vérifions qu'il y a effectivement eu un résultat à la recherche.
Enfin vient le plus intéressant: à l'aide d'une boucle foreach(), nous parcourons le tableau de résultats afin d'en afficher chaque valeur. Pour chacune, on affiche le titre (avec le lien), et un court extrait. En passant, les textes étant envoyés au format UTF-8, il nous faut les décoder (à l'aider de la fonction PHP utf8_decode()) afin d'afficher les caractères spéciaux, comme les accents en français.

On peut donc facilement ajouter des fonctions à l'affichage des résultats. Par exemple, pour ajouter la taille de la page cachée, il suffirait d'ajouter l'appel suivant:

<?=$r['cachedSize'];?>

Par contre, si l'on voulait ajouter un lien vers la dite page cachée, il faut faire appel à une autre des trois procédures fournies par l'API Google: doGetCachedPage():

(fichier cache.php)
<?php
include("nusoap.php");

$soapclient = new soapclient("http://api.google.com/search/beta2");

$params = array(
  'key' => '
VOTRE-CLE-GOOGLE',
  'url' => $adresse,
  );

$result = $soapclient->call("doGetCachedPage", $params, "urn:GoogleSearch", "urn:GoogleSearch");
if ($result)
  {
  if (is_array($result) && $result['faultstring'])
    {
    echo $result['faultstring'];
    }
  else
    {
    echo base64_decode($result);
    }
  }
?>

Comme vous pouvez le voir, doGetCachedPage() ne prend que deux arguments: la clé Google et l'adresse d'origine... Notez que les pages sont renvoyées au format texte encodé en base 64: il nous faut donc les décoder pour les afficher, à l'aide de la fonction PHP base64_decode().
Ensuite, il suffit d'ajouterdans votre fichier google.php l'appel suivant:

<a href="cache.php?adresse=<?=$r['URL'];?>">En cache</p>

Nous allons profiter de la page suivante pour sortir du didacticiel habituel, et écrire à l'aide de l'API un petit jeu très simple: notre propre version de Googlefight...

Page 1 | 2 | 3

 

 
[ Xavier Borderie,JDNet
 
Accueil | Haut de page