2010-04-01 3 views
4

Est-il possible d'extraire la page de résultats de recherche Google en utilisant PHP pour extraire le nombre total de résultats trouvés?Recherche Google: page de résultats de Scrape en PHP pour obtenir des résultats totaux

Si oui, comment est-ce que je ferais cela?

Merci

+1

Je pense que cela est contraire aux conditions de service;) –

+1

Google propose une api de recherche qui peut être utilisé par PHP. Je ne l'ai jamais utilisé, mais obtenir le total des résultats de recherche pourrait être possible avec: http://code.google.com/apis/ajaxsearch/documentation/#fonje_snippets – mre

+0

Si vous obtenez directement les résultats plusieurs fois de suite, alors Google va probablement bloquer votre adresse IP Si vous prévoyez de le faire régulièrement, vous devrez passer par un proxy ou limiter le nombre de connexions que vous faites par heure. – Chris

Répondre

5

Cette classe PHP le fait: http://www.phpclasses.org/browse/package/3924.html

« Cette classe peut être utilisée pour obtenir le nombre total de résultats pour donné Google requête de recherche

Il accède à la. Effectuer une requête pour une recherche donnée .

Site de recherche Google au

La classe analyse la page de résultats et extrait le nombre total de résultats que la requête de recherche donnée a renvoyée. "

6

essayer cela en utilisant phpsimplehtmlparser

$search_query = 'google'; 
$url = sprintf('http://www.google.com/search?q=%s', $search_query); 
$html = file_get_html($url); 
$results = $html->find('#resultStats/b', 2)->innertext; 

echo sprintf('Google found %s results for "%s"', $results, $search_query); 
2

Vous aurez besoin d'un tas de procurations en fonction du nombre de demandes que vous prévoyez d'envoyer. Vous pouvez envoyer environ 500 demandes par jour et IP/proxy sans causer de problèmes ou être détecté.

Vous devriez lire l'article google-rank-checker.squabbel.com, il contient un grattoir complet en PHP. Utilisez ce grattoir, modifiez-le selon vos besoins et ajoutez le code de phpsimplehtmlparser (l'autre réponse) pour obtenir les informations sur les hits totaux pour les mots-clés.

Je suggère l'utilisation de libCURL pour accéder à Google lui-même. Vous aurez BEAUCOUP plus d'options que d'utiliser une API plus simple, vous n'aurez pas beaucoup de plaisir avec les fonctions internes de php file_get_html() ou similaires puisque Google bloquerait votre script très bientôt.

Quelque chose comme ceci:

curl_setopt ($ch, CURLOPT_HEADER, 0); 
    curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1); 
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER , 1); 
    $curl_proxy = "$IP:$PORT"; 
    curl_setopt($ch, CURLOPT_PROXY, $curl_proxy); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 20); 
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.0; en; rv:1.9.0.4) Gecko/2009011913 Firefox/3.0.6"); 
    $url = sprintf('http://www.google.com/search?q=%s', $keyword); 
    curl_setopt ($ch, CURLOPT_URL, $url); 
    $htmdata = curl_exec ($ch); 

Maintenant, il suffit d'utiliser pour saisir les données de HTMLData $

1

regex()/substr()/strstr() Je suis en utilisant ce script php pour savoir la total des résultats de mon nom dans la recherche de google.

<?php
$homepage = file_get_contents('http://www.google.co.in/search?ix=nh&sourceid=chrome&ie=UTF-8&q=Mohit+dabas');
preg_match('/(About)?([\d,]+) result/si', $homepage, $p) ;
echo $p[0];
?>

la principale chose à remarquer est le paramètre « & q » dans le chemin défini ci-dessus

Mon nom contient l'espace de sorte que le navigateur a ajouté « + » pour elle

donc vous devriez vérifier ur requête (ie & q) paramètres et si votre requête contient certains caractères spéciaux comme,,, etc etc, alors vous devriez noter comment ils sont traités par le navigateur un

nd

Modifier les paramètres selon. à votre besoin int script.

srry pour les pauvres anglais

Questions connexes