begin process at 2010 03 20 19:57:49
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Réseau & Internet

 > GOOGLE SEARCH PARSER

GOOGLE SEARCH PARSER


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Réseau & Internet Classé sous :google, parser, moteur, recherche, api Niveau :Initié Date de création :06/06/2007 Date de mise à jour :06/06/2007 14:05:22 Vu :10 807

Auteur : caviar

Ecrire un message privé
Commentaire sur cette source (13)
Ajouter un commentaire et/ou une note

 Description

Un petit script qui permet d'intégrer le moteur de recherche google à son site sans passer par leur API... peut être très utile pour un intranet par exemple ;)

Source

  • <?php
  • /**
  • * Google search parser est un module permettant d'afficher les résultats de recherche google sans passer par leur api
  • * Réalisation : Nans Stefanini -> http://nans.stefanini.free.fr
  • * Blog : http://www.22h22.fr
  • */
  • //renvoie une url longue raccourcie
  • function ShortDisplayURLggp($FullPath,$MaxLenght=65)
  • {
  • If (strlen($FullPath) > $MaxLenght)
  • {
  • //Suppression des arguments et fragment si nécessaire
  • if (strpos($FullPath,"#",0) > 0) $FullPath = substr($FullPath,0,strpos($FullPath,"#",0));
  • if (strpos($FullPath,"?",0) > 0) $FullPath = substr($FullPath,0,strpos($FullPath,"?",0));
  • If (strlen($FullPath) > $MaxLenght)
  • {
  • // Decompose l'URL
  • $FullPathParsed=parse_url($FullPath);
  • // Parties minimales
  • $RootPath = $FullPathParsed['scheme'].'://'.$FullPathParsed['host'];
  • // Slash de fin si dossier
  • if (substr($FullPathParsed['path'],-1) == '/')
  • {
  • $FullPathParsed['path'] = substr($FullPathParsed['path'],0,-1);
  • $isFolder = TRUE;
  • }
  • else
  • {
  • $isFolder = FALSE;
  • }
  • $PathBaseName = basename($FullPathParsed['path']);
  • $FullPathParsed['path'] = substr($FullPathParsed['path'],0,-1*strlen($PathBaseName)-1);
  • // Pas besoin de citer l'index
  • if (($PathBaseName == 'index.html') OR ($PathBaseName == 'index.php') OR ($PathBaseName == 'index.php3'))
  • {
  • $FullPathParsed['path'] = substr($FullPathParsed['path'],0,-1*strlen($PathBaseName)-1);
  • $PathBaseName = basename($FullPathParsed['path']);
  • $isFolder = TRUE;
  • }
  • if ($PathBaseName == '')
  • {
  • if (strlen($RootPath) > $MaxLenght) $RootPath = $FullPathParsed['scheme'].'://'.ShortDisplayHostggp($FullPathParsed['host'],$MaxLenght - strlen($FullPathParsed['scheme']) - 3);
  • return $RootPath;
  • }
  • else if ($FullPathParsed['path'] == '')
  • {
  • return $RootPath.'/…/'.$PathBaseName;
  • }
  • else if ((strlen($RootPath)+strlen($PathBaseName)+3) >= $MaxLenght)
  • {
  • return $RootPath.'/…/'.$PathBaseName;
  • }
  • else
  • {
  • // Reduction du chemin
  • while ((strlen($RootPath)+strlen($PathBaseName)+strlen($FullPathParsed['path'])+3) > $MaxLenght)
  • {
  • $FullPathParsed['path'] = substr($FullPathParsed['path'],0,-1*strlen(basename($FullPathParsed['path']))-1);
  • }
  • if ($FullPathParsed['path'] == '')
  • {
  • return $RootPath.'/…/'.$PathBaseName;
  • }
  • else
  • {
  • return $RootPath.$FullPathParsed['path'].'/…/'.$PathBaseName;
  • }
  • }
  • }
  • Else
  • {
  • return $FullPath;
  • }
  • }
  • Else
  • {
  • return $FullPath;
  • }
  • }
  • function ShortDisplayHostggp($FullHost,$MaxLenght=80)
  • {
  • If (strlen($FullHost) > $MaxLenght)
  • {
  • if (substr_count($FullHost,'.') >= 2)
  • {
  • return $FullHost;
  • }
  • else if (substr_count($FullHost,'.') == 1)
  • {
  • $extension = substr($FullHost,strpos($FullHost,".",0));
  • $FullHost = substr($FullHost,0,strpos($FullHost,".",0));
  • $FullHost = substr($FullHost,0,10).'(…)'.substr($FullHost,-1*(10+3+1+strlen($extension))).'.'.$extension;
  • }
  • else
  • {
  • $FullHost = substr($FullHost,0,$MaxLenght-3).'(…)';
  • }
  • }
  • else
  • {
  • return $FullHost;
  • }
  • }
  • function ShortDisplayNameggp($FullName,$MaxLenght=50)
  • {
  • If (strlen($FullName) > $MaxLenght)
  • {
  • $FullName = substr($FullName,0,$MaxLenght-3).'(…)';
  • return $FullName;
  • }
  • else
  • {
  • return $FullName;
  • }
  • }
  • ?>
  • <?php
  • function googlesearch($req, $start='0',$lg='fr') {
  • $index = @file_get_contents('http://www.google.fr/search?q='.urlencode($req).'&hl='.$lg.'&start='.$start);
  • //echo 'http://www.google.fr/search?q='.urlencode($req).'&hl='.$lg.'&start='.$start;
  • $index = str_replace ('<b>', '', $index);
  • $index = str_replace ('</b>', '', $index);
  • /*
  • Résultats <b>1</b> - <b>10</b> sur un total d'environ <b>1 780</b> pour <b>cogestar</b> (<b>0,15</b> second
  • Résultats <b>61</b> - <b>66</b> sur <b>66</b> pour <b>cogestar</b>. (<b>0,79</b> secondes) */
  • // nombre de liens trouvés
  • preg_match_all('%sur[\s]*(un total d\'environ)* (([0-9 ]*)*) pour%si', $index, $nbliens);
  • /*
  • echo '<pre>';
  • print_r($nbliens);
  • echo '</pre>';
  • */
  • $nblien = $nbliens[2][0];
  • $nblien = str_replace (' ', '', $nblien);
  • // si la requette ne retourne rien on quite la fonction
  • if (!isset($nblien)) {
  • return 'false';
  • break;
  • }
  • preg_match_all('%\<div class=g\>(.*?)(\</div\>)%si', $index, $out);
  • /*
  • echo '<pre>';
  • print_r($out);
  • echo '</pre>';
  • */
  • $tabfin = array();
  • foreach ($out[1] as $key => $value) {
  • /*
  • preg_match_all('%(\<h2 class=r.*\>)?(.*)?\</h2\>%si', $value, $out2);
  • echo '<pre>';
  • print_r($out2);
  • echo '</pre>';
  • */
  • // description
  • $q = '\<td class="j"\>.*(\>)(..*)\<br';
  • // preg_match_all('%%si', $value, $out3);
  • // liens et titre
  • $p = '\<h2 class=r\>\<a href="(.*?)".*\>(..*)\</h2\>';
  • // lien titre + description
  • preg_match_all('%'.$p.'.*'.$q.'%si', $value, $out2);
  • /*
  • echo '<pre>';
  • print_r($out2[1]);
  • print_r($out2[2]);
  • print_r($out2[4]);
  • echo '</pre>';
  • echo '<br /><br /><br />';
  • */
  • $tabfin[$key]['lien'] = $out2[1][0];
  • $tabfin[$key]['titre'] = $out2[2][0];
  • $tabfin[$key]['description'] = $out2[4][0];
  • $tabfin[$key]['nbliens'] = $nblien;
  • /*
  • // pour rechercher les liens verts
  • preg_match_all('%\<span class=a\s*\>\s*([-A-Z0-9+&@#/=~_|!:,.;\%]*)?.*(\</span\>)%si', $value, $out3);
  • echo '<pre>';
  • print_r($out3);
  • echo '</pre>';
  • */
  • }
  • /*
  • */
  • /*
  • echo '<pre>';
  • print_r($tabfin);
  • echo '</pre>';
  • echo '<br /><br /><br />';
  • */
  • return $tabfin ;
  • }
  • /* exemple de fonctionnement */
  • ?>
  • <form action="" method="get" >
  • <input type="text" size="40" name="req" id="req" value="<?php if (isset ($_GET['req']) ){ echo $_GET['req'] ; }?>">
  • <input type="submit" name="submit" value="Rechercher google" >
  • </form>
  • <script>
  • document.getElementById("req").focus();
  • </script>
  • <?php
  • if (!isset ($_GET['pagestartgg']) ){
  • $_GET['pagestartgg'] = 0;
  • }
  • if (isset($_GET['req'])) {
  • $tabgg = googlesearch($_GET['req'],$_GET['pagestartgg']);
  • echo 'Résultats de votre recherche : ';
  • echo '<a href="http://www.google.fr/search?q='.urlencode($_GET['req']).'&start='.$_GET['pagestartgg'].'" target="_blank">Voir sur google</a><br /><br />';
  • foreach ($tabgg as $key => $value) {
  • echo '<strong><a href="'.$value['lien'].'">'.$value['titre'].'</a></strong><br />'.$value['description'].'<br /><a href="'.$value['lien'].'">'.ShortDisplayURLggp($value['lien']).'</a><br /><br />';
  • }
  • $nbliens = $tabgg[0]['nbliens'];
  • echo '<br />';
  • // mise en place des pages
  • $nbpage = round($nbliens/10);
  • echo '<strong>'.$nbpage. ' pages </strong><br />';
  • $ideb = ($_GET['pagestartgg']/10)-10 ;
  • $ideb < 0 ? $ideb = 0: '';
  • $page = ($_GET['pagestartgg']/10);
  • //echo 'page '.($_GET['pagestartgg']/10).'<br />';
  • $nbpage < $ideb ? $ideb = $nbpage : '';
  • //echo 'ideb '.$ideb.'<br />';
  • $ifin = $ideb + 15 ;
  • $ifin > $nbpage ? $ifin = $nbpage : '';
  • echo '<a href="?pagestartgg=0"><<</a> ';
  • for ($i = $ideb; $i<=$ifin; $i++) {
  • if ($page == $i) echo '<strong> ' ;
  • echo '<a href="?pagestartgg='.($i*10).'&req='.urlencode($_GET['req']).'">'.($i+1).'</a> ';
  • if ($page == $i) echo ' </strong>' ;
  • }
  • echo ' <a href="?pagestartgg='.$nbpage.'">>></a> ';
  • }
  • ?>
<?php
/**
* Google search parser est un module permettant d'afficher les résultats de recherche google sans passer par leur api
* Réalisation : Nans Stefanini -> http://nans.stefanini.free.fr
* Blog : http://www.22h22.fr
*/


//renvoie une url longue raccourcie
function ShortDisplayURLggp($FullPath,$MaxLenght=65)
{
	If (strlen($FullPath) > $MaxLenght)
	{
		//Suppression des arguments et fragment si nécessaire
		if (strpos($FullPath,"#",0) > 0) $FullPath = substr($FullPath,0,strpos($FullPath,"#",0));
		if (strpos($FullPath,"?",0) > 0) $FullPath = substr($FullPath,0,strpos($FullPath,"?",0));

		If (strlen($FullPath) > $MaxLenght)
		{
			// Decompose l'URL
			$FullPathParsed=parse_url($FullPath);
			// Parties minimales
			$RootPath = $FullPathParsed['scheme'].'://'.$FullPathParsed['host'];
			// Slash de fin si dossier
			if (substr($FullPathParsed['path'],-1) == '/')
			{
				$FullPathParsed['path'] = substr($FullPathParsed['path'],0,-1);
				$isFolder = TRUE;
			}
			else
			{
				$isFolder = FALSE;
			}
			$PathBaseName = basename($FullPathParsed['path']);
			$FullPathParsed['path'] = substr($FullPathParsed['path'],0,-1*strlen($PathBaseName)-1);
			// Pas besoin de citer l'index
			if (($PathBaseName == 'index.html') OR ($PathBaseName == 'index.php') OR ($PathBaseName == 'index.php3'))
			{
				$FullPathParsed['path'] = substr($FullPathParsed['path'],0,-1*strlen($PathBaseName)-1);
				$PathBaseName = basename($FullPathParsed['path']);
				$isFolder = TRUE;
			}

			if ($PathBaseName == '')
			{
				if (strlen($RootPath) > $MaxLenght) $RootPath = $FullPathParsed['scheme'].'://'.ShortDisplayHostggp($FullPathParsed['host'],$MaxLenght - strlen($FullPathParsed['scheme']) - 3);

				return $RootPath;
			}
			else if ($FullPathParsed['path'] == '')
			{
				return $RootPath.'/…/'.$PathBaseName;
			}
			else if ((strlen($RootPath)+strlen($PathBaseName)+3) >= $MaxLenght)
			{
				return $RootPath.'/…/'.$PathBaseName;
			}
			else
			{
				// Reduction du chemin
				while ((strlen($RootPath)+strlen($PathBaseName)+strlen($FullPathParsed['path'])+3) > $MaxLenght)
				{
					$FullPathParsed['path'] = substr($FullPathParsed['path'],0,-1*strlen(basename($FullPathParsed['path']))-1);
				}

				if ($FullPathParsed['path'] == '')
				{
					return $RootPath.'/…/'.$PathBaseName;
				}
				else
				{
					return $RootPath.$FullPathParsed['path'].'/…/'.$PathBaseName;
				}
			}
		}
		Else
		{
			return $FullPath;
		}

	}
	Else
	{
		return $FullPath;
	}
}

function ShortDisplayHostggp($FullHost,$MaxLenght=80)
{
	If (strlen($FullHost) > $MaxLenght)
	{
		if (substr_count($FullHost,'.') >= 2)
		{
			return $FullHost;
		}
		else if (substr_count($FullHost,'.') == 1)
		{
			$extension = substr($FullHost,strpos($FullHost,".",0));
			$FullHost = substr($FullHost,0,strpos($FullHost,".",0));
			$FullHost = substr($FullHost,0,10).'(…)'.substr($FullHost,-1*(10+3+1+strlen($extension))).'.'.$extension;
		}
		else
		{
			$FullHost = substr($FullHost,0,$MaxLenght-3).'(…)';
		}
	}
	else
	{
		return $FullHost;
	}
}

function ShortDisplayNameggp($FullName,$MaxLenght=50)
{
	If (strlen($FullName) > $MaxLenght)
	{
		$FullName = substr($FullName,0,$MaxLenght-3).'(…)';
		return $FullName;
	}
	else
	{
		return $FullName;
	}
}

?>
<?php




function googlesearch($req, $start='0',$lg='fr') {

$index = @file_get_contents('http://www.google.fr/search?q='.urlencode($req).'&hl='.$lg.'&start='.$start);
//echo 'http://www.google.fr/search?q='.urlencode($req).'&hl='.$lg.'&start='.$start;
$index = str_replace ('<b>', '', $index);
$index = str_replace ('</b>', '', $index);

/*
Résultats <b>1</b> - <b>10</b> sur un total d'environ <b>1 780</b> pour <b>cogestar</b>  (<b>0,15</b> second
Résultats <b>61</b> - <b>66</b> sur <b>66</b> pour <b>cogestar</b>.  (<b>0,79</b> secondes) */
  // nombre de liens trouvés
   preg_match_all('%sur[\s]*(un total d\'environ)* (([0-9 ]*)*) pour%si', $index, $nbliens);
 
 /*
   echo '<pre>';
   print_r($nbliens);
   echo '</pre>';

*/
$nblien = $nbliens[2][0];
$nblien = str_replace (' ', '', $nblien);


// si la requette ne retourne rien on quite la fonction
if (!isset($nblien)) {
  return 'false';
  break;
}

 preg_match_all('%\<div class=g\>(.*?)(\</div\>)%si', $index, $out);
            
 
 /*
 echo '<pre>';
 print_r($out);
 echo '</pre>';
*/

$tabfin = array();
foreach ($out[1] as $key => $value) {
  
  /*
     preg_match_all('%(\<h2 class=r.*\>)?(.*)?\</h2\>%si', $value, $out2);
   
    echo '<pre>';
    print_r($out2);
    echo '</pre>';
*/

  // description
  $q = '\<td class="j"\>.*(\>)(..*)\<br';
   // preg_match_all('%%si', $value, $out3);
  
  
  // liens et titre
  $p = '\<h2 class=r\>\<a href="(.*?)".*\>(..*)\</h2\>';
  
  // lien titre + description
  preg_match_all('%'.$p.'.*'.$q.'%si', $value, $out2);
  
  /*
  echo '<pre>';
    print_r($out2[1]);
    print_r($out2[2]);
    print_r($out2[4]);
    echo '</pre>';
  echo '<br /><br /><br />';
  */
  
  $tabfin[$key]['lien'] = $out2[1][0];
  $tabfin[$key]['titre'] = $out2[2][0];
  $tabfin[$key]['description'] = $out2[4][0];
  $tabfin[$key]['nbliens'] = $nblien;
  
  /*
  // pour rechercher les liens verts
   preg_match_all('%\<span class=a\s*\>\s*([-A-Z0-9+&@#/=~_|!:,.;\%]*)?.*(\</span\>)%si', $value, $out3);
 echo '<pre>';
    print_r($out3);
    echo '</pre>';
    */
    
 
}
/*

      */ 
   
   /*
    echo '<pre>';
    print_r($tabfin);

    echo '</pre>';
  echo '<br /><br /><br />';
  */
  
  

   
   
return $tabfin ;
 
  
}




/* exemple de fonctionnement */


?>
<form action="" method="get" >
<input type="text" size="40" name="req" id="req" value="<?php if (isset ($_GET['req']) ){ echo $_GET['req'] ; }?>">
<input type="submit" name="submit" value="Rechercher google"  >
</form>
<script>
  document.getElementById("req").focus();
</script>
<?php
if (!isset ($_GET['pagestartgg']) ){
$_GET['pagestartgg'] = 0;
}

if (isset($_GET['req'])) {

$tabgg =  googlesearch($_GET['req'],$_GET['pagestartgg']);

echo 'Résultats de votre recherche : ';
echo '<a href="http://www.google.fr/search?q='.urlencode($_GET['req']).'&start='.$_GET['pagestartgg'].'" target="_blank">Voir sur google</a><br /><br />';

foreach ($tabgg as $key => $value) {
  echo '<strong><a href="'.$value['lien'].'">'.$value['titre'].'</a></strong><br />'.$value['description'].'<br /><a href="'.$value['lien'].'">'.ShortDisplayURLggp($value['lien']).'</a><br /><br />';
}

$nbliens = $tabgg[0]['nbliens'];
echo '<br />';

// mise en place des pages
$nbpage = round($nbliens/10);
echo '<strong>'.$nbpage. ' pages </strong><br />';

$ideb = ($_GET['pagestartgg']/10)-10 ;
$ideb < 0 ? $ideb = 0: '';
$page = ($_GET['pagestartgg']/10);
//echo 'page '.($_GET['pagestartgg']/10).'<br />';


$nbpage < $ideb ? $ideb = $nbpage : '';
//echo 'ideb '.$ideb.'<br />';

$ifin = $ideb + 15 ;
$ifin > $nbpage ? $ifin = $nbpage : '';

echo '<a href="?pagestartgg=0"><<</a>   ';
  for ($i = $ideb; $i<=$ifin; $i++) {
    if ($page == $i)  echo '<strong>  ' ;
    echo '<a href="?pagestartgg='.($i*10).'&req='.urlencode($_GET['req']).'">'.($i+1).'</a> ';
      if ($page == $i)  echo '  </strong>' ;
  }
echo '   <a href="?pagestartgg='.$nbpage.'">>></a> ';

}
?>

 Conclusion

Ce code parse le code html des résultats renvoyés par google sur une requette... donc le jour ou ils changeront radicalement de mise en page ça risque de ne plus fonctionner ... m'enfin je pense que c'est pas demain la veille :)
Au debut du code deux trois fonctions qui ne sont pas de mo mais qui sont utiles pour la mise en page des url trop longues ;)


 Historique

06 juin 2007 14:05:23 :
credits

 Sources du même auteur

GÉNÉRATEUR DE LISTE DÉROULANTE
CLASS CALENDRIER AVEC AFFICHAGE D'UN INTERVALE DE JOURS DÉFI...
CONNAITRE LE NOMBRE DE PAGES INDEXÉES SUR GOOGLE
Source avec Zip Source avec une capture FONCTION RÉCURSIVE POUR GÉNÉRER UNE ARBORESCENCE DE FICHIERS...
GÉNÉRATEUR DE CONTENU

 Sources de la même categorie

SONDAGE - VOTE - POLL (AVEC MYSQL) par hornet_bzz
Source avec Zip Source avec une capture CRAYONPRO EST UN CMS SIMPLE EN PHP ET MYSQL - INSTALLATION E... par crayoncie
Source avec Zip Source avec une capture LISTENGEN GÉNÉRATEUR DE FICHIER PLAYLIST par AGG
Source avec Zip IP CALCULATOR par X_Cli
Source avec Zip Source avec une capture WHOIS DOMAIN CLASS : LOOKUP & AVAIBILITY par aKheNathOn

 Sources en rapport avec celle ci

SEARCHMOTS par boscoauhunier
Source avec Zip API GOOGLE ANALYTICS SUR VOTRE SITE par SebaZen
Source avec Zip LISTER LES TERMES RECHERCHÉS DANS GOOGLE OU YAHOO POUR ARRIV... par inc002
MOTEUR DE RECHERCHE DANS UNE BDD par HenvimaL
Source avec Zip Source avec une capture MOTEUR DE RECHERCHE TRÈS SOFISTIQUÉ par papipsycho

Commentaires et avis

Commentaire de caviar le 06/06/2007 14:00:28

Voila voila... j'attends vos commentaires :)

Commentaire de FloBaoti le 06/06/2007 14:08:53

Google permet d'avoir les résultats en XML me semble, non ? Si c'est toujours de vigueur, je ne vois pas pourquoi se compliquer à parser du HTML.

Commentaire de neigedhiver le 06/06/2007 17:25:49

Salut,

Tu réinventes la roue... C'est bien... Mais bon...

http://www.webrankinfo.com/google/outils/google-api.php
http://code.google.com/

Bref, une recherche sur google, et c'est marre.

Enfin c'est bien, ça a du t'occuper un certain temps, et puis c'était un bon exercice.

Commentaire de caviar le 06/06/2007 17:33:10

nan j'ai pas fait ça just pour le fun ...
e fait je déveoppe un intranet et du coup vu que google verrifie la provenance des requettes pour autoriser ou pas une clef api en fonction du site je ne peux pas fournir d'adresse de site puisque ce sera en intranet...
maintenant si gg fournis des résultats parsés en XML !! alors là je prends dessuite ... ceci dit ou ça ?
thx
@++

Commentaire de neigedhiver le 06/06/2007 17:43:23

Ouais non mais pfffffff

Si tu sais pas utiliser un proxy ou autre, aussi... Parce que bon, intranet, peut-être, mais ton intranet il est pas isolé du web, la preuve... Donc il y a forcément un moyen de relayer la requête. M'enfin bon... Moi j'dis _a, j'dis rien, hein... C'est juste qu'avec une API, forcément, c'est plus efficace qu'en parsant toutes les pages de résultat... Surtout que le jour où Google change un <p> en <div> tout ton code tombe à l'eau...

Enfin c'est toi qui vois.

Commentaire de coucou747 le 07/06/2007 05:19:54

reinventer la roue c'est pas forcement mal neigedhiver...

moi j'aurais pas (mais alors pas du tout) fait comme ca : j'aurais fait une classe abstraite MoteurDeRecherche, et des classes filles genre YahooSearch, MsnSearch, GoogleSearch, ExaleadSearch, etc... et une classe Factory pour ensuite faire un truc genre :

$a=new Search('Google://word1/word2/....');

ca ferait un truc plus souple, capable de chercher des images sur plein de moteurs, et autre....

Commentaire de caviar le 07/06/2007 09:42:50

je suis pas encore au niveau des classes objet ...
faut que je m'y penche ... j'arive à peu près à bidouiller celles des autres... mais en autodidacte ça demande un peu plus de temps à prendre en main ... et le temps c'est ce qui me manque le plus dans la vie ...lol :D :D

Commentaire de LeFauve42 le 11/06/2007 09:36:20

Salut,

J'ai ecrit ce genre de code quelques fois, et si ca fonctionne, attend-toi a patcher tous les 6 mois (avec de la chance)... Comme dit Neigedhiver, google ca bouge beaucoup...

Par contre, je crois bien qu'ils ont arrete de fournir des clef d'API googlesearch... (fin 2006 si je me souviens...). Probablement pour pousser leur nouvelle API ajax...

Donc, si tu n'en as pas deja une, c'est trop tard...
(enfin, il doit etre possible de faire des appels ajax depuis le serveur, mais j'avoue ne pas avoir eu le courage de regarder :o) ).

Commentaire de ordiman85 le 15/06/2007 19:44:51

J'ai fait ça pour des moteurs de recherche de mp3 (radioblog, eSpew, AOL audio, ...) et ça fonctionne super bien. J'ai créé une fonction pour chaque moteur au début mais ensuite j'ai fini par faire une fonction générale du style "searchAudio($engines, $search, $page, $nbperpage...)" avec des fichiers de configuration xml personnalisables basés sur les fichiers xml OpenSearch de firefox. Aujourd'hui mon script gère 11 moteurs et affiche les résultats des moteurs sélectionnés en 1 page. Avec 3 moteurs activés la réponse est d'environ 3 secondes, sauf si les résultats sont déjà dans le cache.

Je confirme que l'inconvénient de parser du html c'est lorsque la page change, mais un petit coup de patch au niveau des expressions régulières, et ça repart :) d'autant plus qu'il est facile de savoir si les résultats sont anormaux par une fonction (longueur de la réponse, balises dans la réponse, etc).
@+

Commentaire de R3dDragon le 28/01/2008 16:27:14 10/10

Les résultats via Google et les API sont différents...
Il est donc mieux (en parlant qualité des résultats) de passer par un perseur, mais d'un autre côté les APIs utilise moins de ressource ...

C'est toujours à voir, chacun fait ce qu'il veut...

Commentaire de koutb le 17/05/2008 23:46:17

1001 merci c'est ce que je cherche

Commentaire de smed79 le 02/07/2008 20:09:19

je vous propose ça:

[img]http://www.farspic.com/files/vcx4798hbaqswlfyjmz7.jpg[/img]

[code]<form action="http://www.google.fr/cse" id="cse-search-box" target="_blank">
  <div>
    <input type="hidden" name="cx" value="partner-pub-4340418046855073:ce3sfx-5ixy" />
    <input type="hidden" name="ie" value="ISO-8859-1" />
    <input type="text" name="q" size="24" />
    <input type="submit" name="sa" value="Rechercher" />
  </div>
</form>
<script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse-search-box&amp;lang=fr"></script>[/code]

Commentaire de badoux le 16/12/2008 14:15:27

Je confirme il existe bien un flux pour les résultats de google, mais le problème est que ceux-ci sont limité à environ 20 résultats.
De mon côté je vais devoir également passer par un parser pour la récupération des résultats, ravis de ton commentaire "ordiman85", seulement 3sec, c'est pour toute les pages de tous les moteurs, ou pour une seule d'un moteur ?.
Une question persiste dans ma petite tête: Est-ce que Google, Yahoo, etc, ne finiront pas, par nous mettre en black-list, à force de leur rendre visite constament ?

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

moteur de recherche google? [ par tremier_julien ] ou puis-je trouver le code source du moteur de recherche google afin de l'intégrer dans mon site? Pouvez vous me donnez des indications Merci moteur de recherche google [ par mariobotta ] bonjour,j'ai int&#233;gr&#233; le formidable moteur de recherches de google sur mon site.Je voulais savoir si il y avait moyen d'afficher le r&#233;su moteur de recherche : en dur, en php-mysql... ?? [ par hdh ] Bonsoir ! Je suis en train de faire un site internet.... et pour aider l'internaute &#224; trouver facilement l'info je voudrais mettre en place un mo Paramètres via adresse [ par Galmiza ] Salut,Quand on tape un mot dans google exemple "recherche", on est envoy&#233; &#224; une page nomm&#233;e comme ci-dessous:http://www.google.fr/searc Moteur de recherche pour mon site perso [ par benoyt ] Bonjour &#224; tous et &#224; toute, je n'arrive pas &#224; trouver un moteur de recherche pour mettre sur mon site. En fait mon site, parle de livre, moteur de recherche [ par el_bassir ] j'aimerai realiser un moteur de recherche interne, vous allez dire que c simple, mais l probleme c k j vx qu'a chaque fois que j tappe ou j supprime u Recherche par critère ou reccherche flou [ par pbreaker ] Bonjour, Je suis en gal&#232;re pour un moteur de recherche, en fait mon probl&#232;me consiste a afficher des resultats d'une requete de ce moteur ma de l'aide pour un moteur de recherche [ par maurimaure ] Bonjour, Je voudrais développer un moteur de recherche pour un site internet qui contient deux partie : 1-partie dynamyque (BDD MySql) 2-partie statiq help! pb moteur de recherche sur bd [ par frenchyie ] Salut à tous,Suis novice sur php, on peut dire que je bidouille...je bugs pour faire un moteur de recherche basé sur ma base de donnée, simple en appa recherche web avec google comme 01net.com [ par astuces_jeux ] bonjour je cherche comment faire une recherche sur le web comme 01net.com avec google <A href="


Nos sponsors


Sondage...

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,030 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales