Récuperer les résultats de Google

maximedt

WRInaute discret
Bonjour,
Beaucoup de script existe pour récuperer les résultats de Google mais notre IP est bien vite bannie.
Comment font ces outils qui récupèrent 1000 résultats depuis Google pour les analyser et ensuite dire ou est situé notre site...??
Il y a t-il un API ?
J'ai besoin de récuperer les 1000 premiers résultats pour une trentaine de requetes (je peux l'étaler sur plusieurs semaines), mais je ne sais pas du tout comment faire... :?
Merci pour votre réponse.
 

maximedt

WRInaute discret
Je peux avoir votre code, parce que je crois que j'ai pas tout saisi au code qu'il donne...
En tout cas je crois que c'est bien et je vous remercie pour la réponse :)
 

LiFi

WRInaute occasionnel
En PHP tu fais ça :
Code:
// à la fin de l'adresse tu met les mots clés que tu recherches
$url = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=Paris%20Hilton";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// là tu dois mettre ton site
curl_setopt($ch, CURLOPT_REFERER, "http://www.mysite.com/index.html");
$body = curl_exec($ch);
curl_close($ch);

// tu as dans $json un tableau associatif
$json = json_decode($body, true);

utilise la fonction php var_dump sur $json pour voir ce que contient la variable $json

utilises ces urls pour comprendre un minimum :
http://fr.php.net/json_decode
http://code.google.com/apis/ajaxsearch/ ... ntro_fonje

dans la derniere url tu verras qu'est-ce que tu peux rajouter comme arguments à l'adresse dans $url pour récupérer des données différentes par exemple rsz est par défaut "small" c'est à dire 4 résultats. si tu met &rsz=large à la fin de l'adresse tu aura 8 résultats. J'ai pas trouvé plus que ça et je n'ai pas trouvé pour avoir les résultats de 9 à 16.
 

maximedt

WRInaute discret
J'ai jamais utilisé la classe objet, comment interprété les résultats ?
Si je veux recuperer l'url du premier je fais comment ?
Merci d'avance.
 

LiFi

WRInaute occasionnel
en mettant le deuxieme argument a true:
$json = json_decode($body, true);

tu obtiens un tableau associatif plutot qu'un objet.
ensuite avec var_dump($json) tu verras à l'écran s'afficher la variable.
si tu veux voir la premiere ligne de $json tu fais var_dump($json[0])
 

maximedt

WRInaute discret
Merci pour tes réponses, pour ceux qui auraient la flemme de fouiller dans le array c'est :
echo $json['responseData']['results'][0]['url'];
Mais non, je n'ai que 4 résultats...?
Quand j'écris ceci :
echo $json['responseData']['results'][4]['url'];
Rien ne s'affiche...
 

maximedt

WRInaute discret
Merci.
Bon, c'est pareil qu'avec la technique file_get_contents, l'ip est très vite bloquée...
J'aimerai vraiment savoir comment font les logiciels qui analyse le positionnement o_0 ...
Pour info voici ce que j'ai fait :
Code:
<?php
for ($i=0;$i<125;$i++) {
$start = $i*8;
$url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=larequete&start='.$start.'&hl=fr&rsz=large';

// sendRequest
// note how referer is set manually
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, "http://www.mysite.com/index.html");
$body = curl_exec($ch);
curl_close($ch);

// now, process the JSON string
$json = json_decode($body, true);
// now have some fun with the results...
for ($i2=0;$i2<8;$i2++) {
echo $json['responseData']['results'][$i2]['url']."<br />\n";
}
}
?>
Au bout de 65 résultats, plus rien...
Merci beaucoup d'avance.
 

LiFi

WRInaute occasionnel
ah ok, donc avec l'attribut start on peut avoir tous les résultats sur une requête, j'avais pas calculé :)

peut etre que si tu renseignes la ligne
curl_setopt($ch, CURLOPT_REFERER, "http://www.mysite.com/index.html");
avec ton url cela fonctionnera?

Moi je n'ai jamais eu de blocage de ce que j'en sais pour l'instant juste en mettant mon url :
curl_setopt($ch, CURLOPT_REFERER, "http://www.lire-fichier.com");

et pas spécialement la page à partir de laquelle je demande les résultats puisque de toutes façons cela n'a pas d'importance. Je m'en sers sur les pages des extensions, en bas, comme ici :
http://www.lire-fichier.com/extension-f ... on-818.htm
Et bien je ne suis jamais tombé sur une extension où il manquait les infos de google.

Mais il est clair que la vitesse à laquelle tu fais tes demandes n'a rien à voir avec mon cas.
 

toutnouveau

Nouveau WRInaute
Bonjours a tous

j ai lu votre discussion et inserer dans la page d appel des resultats google le code suivant

en remplacant http://www.mysite.com/index.html par l url de mon site


Code:
<?php
for ($i=0;$i<125;$i++) {
$start = $i*8;
$url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=larequete&start=10&hl=fr&rsz=large';

// sendRequest
// note how referer is set manually
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, "http://www.mysite.com/index.html");
$body = curl_exec($ch);
curl_close($ch);

// now, process the JSON string
$json = json_decode($body, true);
// now have some fun with the results...
for ($i2=0;$i2<8;$i2++) {
echo $json['responseData']['results'][$i2]['url']."<br />\n";
}
}
?>

j obtiens ce type d erreur Fatal error: Call to undefined function: json_decode() in google.php on line 21

j ai donc inserer ce code entre 2 balises PHP , definissant la fonction json http://code.google.com/intl/es-PE/apis/websearch/docs/

Code:
<?php
var service:HTTPService = new HTTPService(); service.url = 'https://ajax.googleapis.com/ajax/services/search/web'; service.request.v = '1.0'; service.request.q = 'Paris Hilton'; // Optional, send your API key. // Read more about why it's useful to have an API key. service.request.key = 'INSERT-YOUR-KEY' service.resultFormat = 'text'; service.addEventListener(ResultEvent.RESULT, onServerResponse); service.send();  private function onServerResponse(event:ResultEvent):void {   try {     var json:Object = JSON.decode(event.result as String);     // now have some fun with the results...   } catch(ignored:Error) {   } }
?>

Code:
<?php
for ($i=0;$i<125;$i++) {
$start = $i*8;
$url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=larequete&start=10&hl=fr&rsz=large';

// sendRequest
// note how referer is set manually
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_REFERER, "http://www.mysite.com/index.html");
$body = curl_exec($ch);
curl_close($ch);

// now, process the JSON string
$json = json_decode($body, true);
// now have some fun with the results...
for ($i2=0;$i2<8;$i2++) {
echo $json['responseData']['results'][$i2]['url']."<br />\n";
}
}
?>



mais ca ne marche pas :? :oops:

j ai oublié qq chose mais quoi ? Merci pour votre aide
 

toutnouveau

Nouveau WRInaute
je crois avoir compris, j utilise un version php4 inferieur a la version requise

meme chose, la variable url appel userip=USERS-IP-ADDRESS, que faut il mettre ici ? est ce obligatoire ?



Merci !

Code:
$url = "https://ajax.googleapis.com/ajax/services/search/web?v=1.0&"."q=MOTCLEFr&key=CLEF API&userip=USERS-IP-ADDRESS";
 

Discussions similaires

Haut