Aller au contenu
Photo d’Armand Philippot
Logo d’Armand Philippot

Armand Philippot

Intégrateur web

Script pour extraire les URL des résultats de Google

Écrit par :
Armand
Publié le :
Temps de lecture :
9 minutes

Je ne dois pas être le seul à avoir déjà eu besoin de récupérer les URL proposées par Google dans ses pages de résultats, quel qu’en soit l’usage ultérieur. Pour utiliser un tel script, je ne pense pas qu’il soit question de couleur de chapeau comme pourrait le penser certain. Un script SEO a avant tout pour utilité de faciliter les tâches d’un référenceur et c’est ce que ce Google scraper fait.

Un peu d’histoire

Comme je le disais, je n’aime pas trop différencier les référenceurs par une couleur de chapeau. Le principal c’est que le travail soit fait et s’il faut utiliser des scripts pour que ça aille plus vite, alors pourquoi pas. Dans mon cas, l’idée de ce script m’est venu lorsque j’ai été confronté à une mise à jour d’un site : les URL avaient évidemment changé. Donc il fallait rapidement mettre en place des redirections mais n’ayant plus les anciennes URL en tête, ça n’aide pas. Plutôt que de récupérer les URL indexées par Google une par une, à la main, je me suis mis à la recherche d’un script pour me faciliter le travail.

Je suis alors tombé sur un script de SeoBlackOut datant de 2008. Malheureusement pour moi, vu la date ça ne m’étonnait qu’à moitié, il ne fonctionnait plus. J’ai donc effectué quelques corrections mais des problèmes persistaient. Je me suis donc décidé à créer mon propre script pour me faciliter la vie, et en faire profiter les autres. Une fois le script fini, il suffisait d’un copier-coller dans Excel pour avoir une vision nette sur toutes les URL à rediriger !

Les détails du script

Je vous propose deux versions d’un script pour SEO permettant d’extraire les URL des résultats de Google. La première version comporte du CSS et du Javascript pour un meilleur rendu mais aussi pour faciliter la vie à tout le monde. Cependant comme je sais que certaines personnes n’aiment pas le javascript, je vous livre une deuxième version nettoyée, vous gagnerez au passage quelques octets.

Pour utiliser l’un des deux scripts, rien de plus simple ! La première étape sera de faire un copier coller dans votre bloc-notes. Ensuite, il suffit d’enregistrer le fichier au format « .php ». Une fois cette rude tâche réalisée, vous n’aurez plus qu’à transférer le fichier sur votre serveur et à vous rendre, grâce à votre navigateur, sur la bonne URL. Évidemment, il est également possible de l’utiliser en local via un logiciel comme WAMP.

Le script possède 3 champs. Dans le premier, vous aurez à sélectionner le domaine concerné et la langue pour les cas particuliers. Dans le deuxième champ, vous indiquerez le nombre de page que vous souhaitez extraire. Enfin, le troisième champ est réservé à vos mots-clés. Voila, vous savez tout, je vous laisse tester par vous-même.

Google scraper

Script avec CSS et Javascript

<?php
// Script PHP par Armand Philippot - https://wp.armandphilippot.com/

if ((isset($_POST['ndd'])) && (isset($_POST['nbserp'])) && (isset($_POST['keywords']))) {
	if (($_POST['ndd']) != "") {
		$ndd = $_POST['ndd'];
		switch ($ndd) {
			case "fr":
				$ext = "fr";
				$hl = "fr";
				break;
			case "com":
				$ext = "com";
				$hl = "en";
				break;
			case "es":
				$ext = "es";
				$hl = "es";
				break;
			case "it":
				$ext = "it";
				$hl = "it";
				break;
			case "dede":
				$ext = "de";
				$hl = "de";
				break;
			case "uken":
				$ext = "co.uk";
				$hl = "en";
				break;
			case "au":
				$ext = "com.au";
				$hl = "en";
				break;
			case "cafr":
				$ext = "ca";
				$hl = "fr";
				break;
			case "caen":
				$ext = "ca";
				$hl = "en";
				break;
			case "befr":
				$ext = "be";
				$hl = "fr";
				break;
			case "benl":
				$ext = "be";
				$hl = "nl";
				break;
			case "bede":
				$ext = "be";
				$hl = "de";
				break;
			case "been":
				$ext = "be";
				$hl = "en";
				break;
		}
	} else {
		$ext = "fr";
		$hl = "fr";
	}

	if (($_POST['nbserp']) != "" && (is_numeric($_POST['nbserp']))) {
		$nbserp = strip_tags($_POST['nbserp']) - 1;
	} else {
		$nbserp = 3;
	}

	if (($_POST['keywords']) != "") {
		$q = strip_tags($_POST['keywords']);
	} else {
		$error = '<p id="error">Veillez à remplir les champs correctement.</p>';
	}

	$page = 0;
	$urlgoogle = "http://www.google." . $ext . "/search?hl=" . $hl . "&q=" . urlencode($q) . "&start=" . $page . "&filter=0";
	$useragent = "Mozilla/5.0";
	$urlserp = "";
	while ($page <= $nbserp) {
		if (function_exists('curl_init')) {
			$ch = curl_init();
			curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
			curl_setopt($ch, CURLOPT_URL, $urlgoogle);
			curl_setopt($ch, CURLOPT_HEADER, false);
			curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
			$serps = curl_exec($ch);
			curl_close($ch);
		} else {
			$serps = file_get_contents($urlgoogle);
		}
		preg_match_all('/<h3 class="r"><a href="(.*?)"/si', $serps, $matches);
		$result = count($matches[1]);
		$page++;
		$urlgoogle = "http://www.google." . $ext . "/search?hl=" . $hl . "&q=" . urlencode($q) . "&start=" . $page . "0&filter=0";
		$i = 0;
		while ($i < $result) {
			$urlserp .= trim($matches[1][$i]);
			$urlserp = str_replace("/url?q=", "", $urlserp);
			$urlserp = preg_replace("~(.+&sa)[^/]*~", "$1", $urlserp);
			$urlserp = str_replace("&sa", "\n", $urlserp);
			$urlserp = str_replace("/search?q=" . urlencode($q) . "&tbm=plcs", "", $urlserp);
			$i++;
			flush();
		}
	}
} else {
	$error = '<p id="error">Veillez à remplir les champs correctement.</p>';
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta http-equiv="Content-Language" content="fr-FR" />
	<meta http-equiv="X-UA-Compatible" content="IE=8" />
	<meta name="language" content="fr-FR" />
	<title>Google Scraper : Extraire les URL des résultats Google</title>
	<meta name="description" content="Ce script permet d'extraire les URL des pages de résulats de Google. Script proposé par Armand Philippot, référenceur et rédacteur web." />
	<style>
		* {
			margin: 0;
			padding: 0;
		}

		body {
			font-family: Verdana, Arial, Sans-Serif;
			font-size: 12px;
		}

		#wrap {
			margin: 20px;
		}

		h1 {
			margin-bottom: 30px;
			font-size: 20px;
		}

		h2 {
			margin-bottom: 15px;
		}

		p {
			margin-bottom: 15px;
		}

		form {
			margin-bottom: 15px;
		}

		select,
		#nbserp,
		#search {
			text-align: center;
		}

		select {
			padding: 2px 1px;
		}

		#nbserp {
			padding: 2px;
		}

		#keywords {
			padding: 4px 8px;
			margin-top: 15px;
		}

		#search {
			margin-top: 15px;
			width: 70px;
		}

		#copyright {
			font-size: 10px;
		}

		#error {
			font-weight: bold;
			color: red;
		}

		textarea {
			width: 800px;
			height: 100%;
			resize: none;
			min-height: 500px;
		}

		#selectall {
			width: 130px;
		}
	</style>
</head>

<body>
	<div id="wrap">
		<h1>Extraire les URL des résultats Google</h1>
		<?php
		if ((isset($_POST['ndd'])) && (isset($_POST['nbserp'])) && (isset($_POST['keywords']))) {
			if (($_POST['ndd']) != '' && ($_POST['nbserp']) != '' && ($_POST['keywords']) != '') {
				echo "<h2>Résultats de votre recherche pour : " . $q . " sur Google." . $ext . "</h2>";
				echo '<form id="listURL">';
				echo '<p><input type="button" id="selectall" value="Sélectionner tout" onClick="javascript:this.form.selectionURL.focus();this.form.selectionURL.select();" /></p>';
				echo '<textarea id="selectionURL">' . urldecode($urlserp) . '</textarea>';
				echo '</form>';
			} else {
				echo $error;
			}
		}
		?>
		<form id="form-extract" method="POST" action="<?php echo strip_tags($_SERVER['REQUEST_URI']); ?>">
			<p>
				<label for="ndd">Choisir la version de Google :</label>
				<select name="ndd">
					<option value="fr">Google.fr</option>
					<option value="com">Google.com</option>
					<option value="es">Google.es</option>
					<option value="it">Google.it</option>
					<option value="dede">Google.de</option>
					<option value="uken">Google.co.uk</option>
					<option value="au">Google.com.au</option>
					<option value="cafr">Google.ca FR</option>
					<option value="caen">Google.ca EN</option>
					<option value="befr">Google.be FR</option>
					<option value="benl">Google.be NL</option>
					<option value="bede">Google.be DE</option>
					<option value="been">Google.be EN</option>
				</select>
			</p>
			<p>
				<label for="nbserp">Nombre de pages à extraire :</label>
				<input type="text" size="4" name="nbserp" id="nbserp" value="3" />
			</p>
			<p><input type="text" size="70" name="keywords" id="keywords" value="" /></p>
			<p><input type="submit" name="search" id="search" value="Extraire" /></p>
		</form>
		<p id="copyright">Ce script vous est proposé par Armand Philippot, <a href="https://wp.armandphilippot.com/">référenceur web</a>.</p>
	</div>
</body>

</html>

Script sans CSS ni Javascript

<?php
// Script PHP par Armand Philippot - https://wp.armandphilippot.com/

if ((isset($_POST['ndd'])) && (isset($_POST['nbserp'])) && (isset($_POST['keywords']))) {
	if (($_POST['ndd']) != "" && ($_POST['nbserp']) != "" && ($_POST['keywords']) != "") {
		if (isset($_POST['ndd'])) {
			$ndd = $_POST['ndd'];
			switch ($ndd) {
				case "fr":
					$ext = "fr";
					$hl = "fr";
					break;
				case "com":
					$ext = "com";
					$hl = "en";
					break;
				case "es":
					$ext = "es";
					$hl = "es";
					break;
				case "it":
					$ext = "it";
					$hl = "it";
					break;
				case "dede":
					$ext = "de";
					$hl = "de";
					break;
				case "uken":
					$ext = "co.uk";
					$hl = "en";
					break;
				case "au":
					$ext = "com.au";
					$hl = "en";
					break;
				case "cafr":
					$ext = "ca";
					$hl = "fr";
					break;
				case "caen":
					$ext = "ca";
					$hl = "en";
					break;
				case "befr":
					$ext = "be";
					$hl = "fr";
					break;
				case "benl":
					$ext = "be";
					$hl = "nl";
					break;
				case "bede":
					$ext = "be";
					$hl = "de";
					break;
				case "been":
					$ext = "be";
					$hl = "en";
					break;
			}
		} else {
			$ext = "fr";
			$hl = "fr";
		}

		if ((isset($_POST['nbserp'])) && (is_numeric($_POST['nbserp']))) {
			$nbserp = strip_tags($_POST['nbserp']) - 1;
		} else {
			$nbserp = 3;
		}

		if (isset($_POST['keywords'])) {
			$q = strip_tags($_POST['keywords']);
		} else {
			$error = '<p id="error">Veillez à remplir les champs correctement.</p>';
		}

		$page = 0;
		$urlgoogle = "http://www.google." . $ext . "/search?hl=" . $hl . "&q=" . urlencode($q) . "&start=" . $page . "&filter=0";
		$useragent = "Mozilla/5.0";
		$urlserp = "";
		while ($page <= $nbserp) {
			if (function_exists('curl_init')) {
				$ch = curl_init();
				curl_setopt($ch, CURLOPT_USERAGENT, $useragent);
				curl_setopt($ch, CURLOPT_URL, $urlgoogle);
				curl_setopt($ch, CURLOPT_HEADER, false);
				curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
				$serps = curl_exec($ch);
				curl_close($ch);
			} else {
				$serps = file_get_contents($urlgoogle);
			}
			preg_match_all('/<h3 class="r"><a href="(.*?)"/si', $serps, $matches);
			$result = count($matches[1]);
			$page++;
			$urlgoogle = "http://www.google." . $ext . "/search?hl=" . $hl . "&q=" . urlencode($q) . "&start=" . $page . "0&filter=0";
			$i = 0;
			while ($i < $result) {
				$urlserp .= trim($matches[1][$i]);
				$urlserp = str_replace("/url?q=", "", $urlserp);
				$urlserp = preg_replace("~(.+&sa)[^/]*~", "$1", $urlserp);
				$urlserp = str_replace("&sa", "<br />", $urlserp);
				$urlserp = str_replace("/search?q=" . urlencode($q) . "&tbm=plcs", "", $urlserp);
				$i++;
				flush();
			}
		}
	} else {
		$error = '<p id="error">Veillez à remplir les champs correctement.</p>';
	}
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">

<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<meta http-equiv="Content-Language" content="fr-FR" />
	<meta http-equiv="X-UA-Compatible" content="IE=8" />
	<meta name="language" content="fr-FR" />
	<title>Google Scraper : Extraire les URL des résultats Google</title>
	<meta name="description" content="Ce script permet d'extraire les URL des pages de résulats de Google. Script proposé par Armand Philippot, référenceur et rédacteur web." />
</head>

<body>
	<div id="wrap">
		<h1>Extraire les URL des résultats Google</h1>
		<?php
		if ((isset($_POST['ndd'])) && (isset($_POST['nbserp'])) && (isset($_POST['keywords']))) {
			if (($_POST['ndd']) != '' && ($_POST['nbserp']) != '' && ($_POST['keywords']) != '') {
				echo "<h2>Résultats de votre recherche pour : " . $q . " sur Google." . $ext . "</h2>";
				echo '<div>' . urldecode($urlserp) . '</div>';
			} else {
				echo $error;
			}
		}
		?>
		<form id="form-extract" method="POST" action="<?php echo strip_tags($_SERVER['REQUEST_URI']); ?>">
			<p>
				<label for="ndd">Choisir la version de Google :</label>
				<select name="ndd">
					<option value="fr">Google.fr</option>
					<option value="com">Google.com</option>
					<option value="es">Google.es</option>
					<option value="it">Google.it</option>
					<option value="dede">Google.de</option>
					<option value="uken">Google.co.uk</option>
					<option value="au">Google.com.au</option>
					<option value="cafr">Google.ca FR</option>
					<option value="caen">Google.ca EN</option>
					<option value="befr">Google.be FR</option>
					<option value="benl">Google.be NL</option>
					<option value="bede">Google.be DE</option>
					<option value="been">Google.be EN</option>
				</select>
			</p>
			<p>
				<label for="nbserp">Nombre de pages à extraire :</label>
				<input type="text" size="4" name="nbserp" id="nbserp" value="3" />
			</p>
			<p><input type="text" size="70" name="keywords" id="keywords" value="" /></p>
			<p><input type="submit" name="search" id="search" value="Extraire" /></p>
		</form>
		<p id="copyright">Ce script vous est proposé par Armand Philippot, <a href="https://wp.armandphilippot.com/">rédacteur web seo</a>.</p>
	</div>
</body>

</html>

Le script a été testé à plusieurs reprises avec différentes requêtes, mais il est possible qu’un bug soit passé inaperçu. Donc si vous rencontrez des difficultés à utiliser le script, n’hésitez pas à me contacter pour que je fasse les corrections nécessaires.

MAJ du 20/06/2019 : le script n’est plus fonctionnel en l’état

Commentaires

    1. Armand avatar
      Armand

      Je n’étais pas au courant pour cette astuce ! Merci, je la note au cas où. 😉

    2. Christian avatar
      Christian

      Merci pour le partage, ce sera toujours mieux que SB qui a vraiment du mal avec les résultats sur la France.
      On va essayer cela !

      1. Armand avatar
        Armand

        Normalement ça fonctionne correctement. J’ai pas regardé en détails chaque pays proposés, mais ceux qui seront le plus utilisés normalement tout est ok.

        PS : Désolé pas de KeywordLuv ici, mais le lien est bien en dofollow. 😉

        1. SeoBlack Inside avatar
          SeoBlack Inside

          Bonne référence le site “SeoBlackOut ” 😉
          Et merci pour cette adaptation.

          J’attire cependant l’attention, tout comme avec ScrapeBox c’est à utiliser avec “délicatesse” sous peine de se prendre un joli “503”.

          Bien sur si vous avez des proxies valident GG, pas de soucis.

          1. Armand avatar
            Armand

            Effectivement, je n’ai pas précisé mais sans proxy faut sûrement pas en faire un usage intensif. Par contre, si c’est quelques requêtes de temps en temps, même sans proxy ça passe. (enfin en tout cas pour le moment pas eu de soucis !)

            1. Armand avatar
              Armand

              Oui je pense que c’est suffisant.

              Il ne faut pas non plus avoir peu de l’utiliser sans rien. J’ai effectué tout mes tests sans proxy et aucun soucis jusqu’à maintenant. 😉

              Le conseil de SeoBlack Inside c’est surtout pour ceux qui comptent envoyer un trop grand nombre de requêtes.

            2. Maë avatar
              Maë

              Salut Armand (ou Arnaud c’est pareil hein :p)

              Je te donne le lien pour scrap avec GG Docs si ça t’intéresse et si l’anglais te fait pas peur :

              http://bit.ly/iBhMeh

              Merci pour ton code en tout cas, j’vais pouvoir commencer à débuter dans le scrap 🙂

              1. Armand avatar
                Armand

                Merci je regardais ça ! (et merci de me faire remarquer un bug dans les commentaires -__- je regarderais pourquoi il me vire les http:// des liens dans le texte)

              2. Leréférenceur avatar
                Leréférenceur

                Merci pour le partage. Je pense que ca va aider pas mal de personne. c’est toujours intéressant de scraper des résultats de Google pour en faire différentes choses.

                1. Angkor avatar
                  Angkor

                  Cool par flemme je ne maintenais plus mon code depuis des mois, et au bout d’un moment ca fini par ne pluspasser. Je vais adapter celui-ci, merci beaucoup !

                  1. Armand avatar
                    Armand

                    Je valide à priori tous les commentaires tant qu’il ne s’agit pas d’un “Bon article” et les liens sont en dofollow.
                    Par contre, je discute avec des personnes donc seuls les prénoms ou pseudo sont autorisés.
                    Dans le cas contraire, je remplace par le pseudo/prénom de la personne s’il est évident, sinon je supprime le lien.

                    Après ce petit éclaircissement, je vous remercie tout de même tous pour l’intérêt porté au script. 😉

                    1. AxeNet avatar
                      AxeNet

                      Bien vu ! Et merci car un script perso que l’on peut toujours retoucher est sacrément pratique.
                      Bravo pour le partage !

                      Sylvain

                        1. Armand avatar
                          Armand

                          Il faut tout d’abord le sélectionner, le copier puis le coller dans un éditeur de texte type bloc-notes pour l’enregistrer au format “.php”.
                          Ensuite, il faut soit le transférer sur un serveur via FTP (par exemple la racine de votre site), soit utiliser un logiciel comme WAMP (pour Windows, sinon MAMP sur Mac ou LAMP sur Linux).
                          Sur votre serveur il suffit ensuite de se rendre sur la bonne URL.
                          Avec WAMP, une fois installé, il vous permettra de simuler un serveur en local : vous vous rendez dans le dossier www, vous créez un dossier “google-scraper” par exemple et vous y coller le fichier. Ensuite dans votre navigateur vous vous rendez sur http:// localhost/google-scraper/votre-fichier .php (sans les espaces)
                          En espérant que les explications sont assez claires. 😉

                          1. Penguinzophren avatar
                            Penguinzophren

                            Merci pour le partage de ce script, c’est vrai que c’est assez laborieux pour les résultats français avec un logiciel dédié comme SB etc… Je le met du coup en place de suite sur mon serveur 😉

                            1. Pierre avatar
                              Pierre

                              Très utile ton script, sympa de le partager, par contre a coupler avec des proxy’s pour plus d’efficacité …

                              1. Arnaud avatar
                                Arnaud

                                Merci pour le script. Le problème reste du côté des proxies, mais pour ceux qui en utilisent pas souvent, hésitez pas à aller faire un tour sur les forum US black hat. des mecs laissent chaque jour des centaines de proxies à utiliser. c’est pas de la grande qualité, mais c’est gratuit!

                                1. Clément avatar
                                  Clément

                                  Merci pour cet outil et de le faire partager ça peu être très utile. Il y à moyen de le rendre encore plus puissant en y ajoutant une fonction de proxy ou quelques autres outils intéressant. encore merci 🙂

                                  1. Webmaster avatar
                                    Webmaster

                                    C’est un vrai bonheur que de pouvoir compter sur les autres quand on y connait rien en code 🙂
                                    Comme on dit au States là d’où je viens (euh non en fait ^^) “You’ve made my day!”

                                    1. Armand avatar
                                      Armand

                                      Merci pour le commentaire, ça fait toujours plaisir d’avoir un retour !
                                      Par contre, comme précisé quelques commentaires au dessus : je parle avec des personnes et non avec des mots-clés, donc à défaut d’un prénom/pseudo j’ai remplacé le mot-clé par webmaster.

                                    2. Esteban avatar
                                      Esteban

                                      Enfin un script en php facile à mettre en place et surtout fonctionnel! Merci!

                                      J’ai un petit soucis cependant, j’aimerais modifier le script pour pouvoir entrer plusieurs mots clés et avoir le nombre de resultats pour chacuns. Auriez-vous une piste pour y arriver?

                                      Cordialement

                                      Esteban

                                      1. Armand avatar
                                        Armand

                                        Pour compter le nombre de résultat je modifierais le script à partir de :
                                        $result=count($matches[1]);
                                        Il faudrait une variable qui va additionner le nombre de matches et afficher cette variable.
                                        Par contre :
                                        while ($page<=$nbserp)
                                        La variable $nbserp permet de ne pas avoir de boucle infinie en limitant while. Donc pour ceux que tu veux je dirai qu'il faudrait modifier en :
                                        while ($page == true)
                                        (tant qu'il y a des pages continuer la boucle)
                                        Pour qu'il y ait plusieurs mots-clés je dupliquerais le champ de requête, et je dupliquerais la boucle pour qu'il y en a une par mot-clé. Le code risque d'être assez long par contre... il y a sûrement moyen de le réduire mais là à première vue c'est la méthode la plus simple je dirai.

                                      2. Jessy avatar
                                        Jessy

                                        Salut,
                                        Je viens de tester ça, pas de bugs de mon côté donc bien content :-). Je te tire mon chapeau! (et peu importe sa couleur 😉

                                        1. Robin avatar
                                          Robin

                                          Pratique !
                                          Je viens de détourner ce script pour en faire un testeur de pénalité google sur mes listes d’annuaires et de CPs 🙂

                                          un cron, et il me checke toutes les nuits le bon état de santé de mes petites targets.

                                          Merci !

                                          1. Armand avatar
                                            Armand

                                            Je n’avais pas pensé à ce détournement mais effectivement c’est pas bête comme idée. Le but c’est bien de proposer une base pour que chacun en fasse ce qu’il lui plaise. D’ailleurs, je me suis rendu compte que j’ai même omis de mettre “filter=O” dans l’URL… donc c’est encore plus “une base”.

                                          2. kriss avatar
                                            kriss

                                            Cool ! J’étais justement en train de réécrire le script de SeoBlackOut, quand j’ai eu l’idée de chercher sur Google si jamais quelqu’un l’avait pas déjà fait !

                                            Merci, j’ai gagné une journée grâce à toi ! 😉

                                            1. greg avatar
                                              greg

                                              Trop bien pour faire des petites recherches de WPMU 🙂

                                              Merci beaucoup !

                                              1. greg avatar
                                                greg

                                                Par contre ton outil fonctionne avec la commande “site:site.com” mais pas pour “allinurl:site.com”. Aurais tu une astuce pour le faire fonctionner ?

                                                Merci d’avance

                                                Note : Je veux bien être sympa et aider, mais inventer un problème juste pour reposer un backlink parce que le 1er n’est pas passé… ça ne me plait pas trop comme pratique. A bon entendeur. 😉

                                                1. Armand avatar
                                                  Armand

                                                  Je viens de tester, et ça fonctionne en local de mon côté pour les 2 versions du script.
                                                  Tu obtiens un message d’erreur ? Ou rien ne s’affiche ?

                                                  1. Gaëlle avatar
                                                    Gaëlle

                                                    Chez moi l’écran est blanc avec le script avec CSS et Javascript et l’autre ne fait rien :/

                                                    1. Armand avatar
                                                      Armand

                                                      Tu es sûre d’avoir copié l’intégralité du code ? Je viens de tester les deux versions en local (sous WAMP, sans proxy) et les deux scripts fonctionnent sans problèmes chez moi…

                                                      1. Xavier avatar
                                                        Xavier

                                                        Extra pile poile ce dont j’avais besoin!

                                                        En revanche j’ai un petit soucis au niveau de l’url decode (%3F et %3D) est-ce seulement chez moi?

                                                        Merci encore pour ce ptit script
                                                        (et +1 lecteur RSS pour ta peine)

                                                        1. Armand avatar
                                                          Armand

                                                          Effectivement il manquait un urldecode, merci pour la remarque. 😉 J’ai mis à jour le script dans l’article.
                                                          Au niveau de l’affichage des résultats dans le body (dans le textarea pour le 1er et dans la div pour le 2e) il faut modifier le $urlserp en urldecode($urlserp)

                                                            1. Rémi avatar
                                                              Rémi

                                                              Bonjour, ma question peut paraître stupide mais elle est la suivante, la majoritée des blogs actuels tourne via un CMS, de tel script existe déjà. Sais tu m’indiquer pourquoi as tu pris le temps ( je pense qu’il en faut tout de même 😉 ) et l’interêt de remettre au gout du jour un tel script ? 😉

                                                              1. Armand avatar
                                                                Armand

                                                                Je ne comprends pas bien le rapport avec les CMS, donc je ne répondrai peut être pas efficacement à ta question.
                                                                Pour ce qui est du script, il me permet de gagner du temps pour récupérer l’ensemble des URL indexées d’un site. Certains sites que je gère subissent des mises à jour par d’autres personnes et je ne suis pas toujours informés à temps pour mettre en place les redirections nécessaires. Donc je crée les redirections en me basant sur les URL indexées par Google. 😉 Après ce n’est pas le seul usage… mais c’est celui qui m’a poussé à faire ce script : éviter de perdre du temps pour pas grand chose.

                                                              2. Arthur avatar
                                                                Arthur

                                                                Bonjour, c’est super intéressant comme script.

                                                                Je recherche un système un peu différent mais je débute alors si vous quelques conseils de scripts ou d’astuces ce serait super.

                                                                Mon objectif :

                                                                récupérer les actualités de 100 sites internet sur différents mots clés dans la presse.

                                                                Ce à quoi j’ai pensé :

                                                                1) faire une requête quotidienne dans google par mot clé (en sélectionnant les dernières 24h)

                                                                2) filtrer les url en fonction des domaines correspondants aux 100 sites définis

                                                                3) récupérer les balises title et metadescription de chaque url

                                                                Comment faire ? y a t-il un script ou une associations de script que vous pourriez me conseiller ?

                                                                Merci d’avance

                                                                1. Armand avatar
                                                                  Armand

                                                                  Bonjour,

                                                                  A ma connaissance il n’y a pas de script tout prêt…

                                                                  Pour le point 1), en faisant quelques modifications du script proposé dans l’article c’est faisable. Ce qu’il faut c’est rajouter le paramètre &tbs=qdr:d dans l’URL pour filtrer les résultats datant de moins de 24h. Après, plutôt que de rentrer un nombre de page (ou alors vérifier avant combien il y a de pages à la main dans Google) il faudrait faire une boucle qui fonctionne tant que la condition (qu’il y ait des résultats) est vraie.

                                                                  Pour le point 2), à part faire le ménage soit même dans Excel, je ne vois pas… mais avec 100 sites c’est sûr que ça peut être long. Sinon avec un script qui va scrapper le contenu du document pour récupérer les URL commençant pas les noms de domaines sélectionnés, ça doit être faisable mais là encore aucun script tout prêt à ma connaissance…

                                                                  Pour le point 3), il y a bien ce script qui permet en rentrant une liste d’URL de récupérer les métas : http://www.outils-referencement.com/outils/pages-web/analyse Par contre, c’est pas idéal pour les récupérer. Peut-être regarder du côté du plugin SEO pour Excel, je ne le connais pas assez, il faudrait que je me penche un peu plus dessus un de ces jours, mais il y a peut être une fonction pour récupérer les métas d’une URL donnée.

                                                                2. Maë avatar
                                                                  Maë

                                                                  Salut Armand, aurais-tu un exemple de requête qui fonctionne ? Je ne sais pas si c’est moi qui galère, mais j’ai testé avec des mots-clés et des URLs, mais ça ne me renvoi aucun résultat.

                                                                  1. Armand avatar
                                                                    Armand

                                                                    Salut Maëva,
                                                                    C’est bizarre, je viens de retester les deux scripts et chez moi il n’y a pas de problème. J’ai essayé avec “hôtel design” par exemple et ça me remonte bien les URLs…
                                                                    Quel est le problème ? rien ne s’affiche ? ou c’est autre chose ?
                                                                    Si tu veux pas mettre ça publiquement tu peux toujours m’expliquer le problème par mail. 😉

                                                                  2. Nassiba avatar
                                                                    Nassiba

                                                                    Bonjour,
                                                                    ce script est-il encore fonctionnel?
                                                                    Lorsque je le teste sur Eclipse il me renvois l’erreur suivante:
                                                                    PHP Notice: Undefined index: REQUEST_URI in C:\..\workspace\php\script.php on line 141
                                                                    PHP Stack trace:PHP 1. {main}() C:\..\workspace\php\script.php:0
                                                                    Merci

                                                                    1. Armand avatar
                                                                      Armand

                                                                      Bonjour,
                                                                      Oui le script fonctionne toujours. Je viens de retester pour ne pas dire de bêtise.
                                                                      Par contre, n’ayant jamais essayé de le faire fonctionner via Eclipse je ne saurai dire d’où vient le problème. Est-ce que vous avez essayé avec un logiciel comme WAMP ou EasyPHP ? Ou tout simplement en le transférant sur un serveur via FTP ?
                                                                      A priori l’erreur rencontrée correspondrait à l’adresse renseignée dans le formulaire :
                                                                      echo strip_tags($_SERVER[‘REQUEST_URI’]);
                                                                      Certainement qu’Eclipse n’arrive pas à ressortir l’URI…

                                                                    2. Nassiba avatar
                                                                      Nassiba

                                                                      Bonjour,
                                                                      je vous remercie de me répondre aussi vite.
                                                                      Effectivement il fonctionne bien sur Wamp. Cependant, je me demandais s’il était possible d’obtenir l’ensemble des résultats de Google (sans préciser un nombre de pages à extraire au préalable). Par ailleurs, en ce qui concerne les requêtes, est-il possible qu’elles contiennent un filetype.
                                                                      Merci encore

                                                                      1. Armand avatar
                                                                        Armand

                                                                        Bonjour,
                                                                        Content de voir que le problème est finalement résolu !
                                                                        Pour les commandes Google, oui elles fonctionnent à travers le script donc filetype également.
                                                                        Pour le nombre de pages, ce doit être réalisable en modifiant le script. Il faudrait préciser que la boucle PHP continue de récupérer les résultats tant qu’il y a encore des pages mais c’est plus compliqué à gérer. Et même si je comprend l’idée, je n’ai jamais été en mesure de trouver comment le faire fonctionner. Donc je ne pourrai pas aider à ce niveau là…

                                                                      2. Nassiba avatar
                                                                        Nassiba

                                                                        Bonjour,
                                                                        je vous remercie de répondre.
                                                                        Concernant le filetype, ça fonctionne à la perfection.
                                                                        Et pour ce qui est du nombre de pages, il serait possible à mon avis d’essayer de l’obtenir en récupérant le nombre de résultats dans comme pour les URL et de le diviser par 10. Comme suit:
                                                                        $request = ‘ le mot clé’;
                                                                        $url = “http://www.google.fr/search?aq=f&sourceid=chrome&ie=UTF-8&q=$request”;

                                                                        $page = file_get_contents ($url);

                                                                        preg_match_all(‘#Environ(.+)résultats#’,$page, $numResult);
                                                                        $numPages=$numResult/10;
                                                                        print_r($numPages);

                                                                        Cependant, je ne suis pas sûre de pouvoir me fier aux chiffres que Google avance.

                                                                        1. Armand avatar
                                                                          Armand

                                                                          Bonjour,
                                                                          J’ai également pensé à cette donnée mais le nombre de résultats affiché par Google est approximatif, ça ne correspond pas forcément à la réalité. Donc ça pourrait être mis en place mais au final ça ne sera pas vraiment plus efficace que de renseigner soi-même un nombre de page… Si Google pouvait nous simplifier la vie ce serait trop beau. 🙂

                                                                        2. François-Olivier avatar
                                                                          François-Olivier

                                                                          Merci pour ce partage. Je suis tombé sur ton site en cherchant un scrapeur JS car le miens ne fonctionne plus depuis la dernière mise à jour de Firefox mais ton script va me faire gagner beaucoup de temps, je l’ajoute à ma SEO box perso.

                                                                          J’ai modifié un peu le script pour générer des user agent aléatoires et utiliser mes proxy privés et ça tourne du tonerre sur des milliers de requête.
                                                                          Il faudrait toutefois ajouter une temporisation aléatoire pour ne pas griller les IP.

                                                                          Merci à toi !

                                                                          1. Armand avatar
                                                                            Armand

                                                                            De rien, et tu as bien saisi l’utilité ! Le but c’est que chacun puisse l’adapter à son utilisation. Là j’établis un seul user-agent sans proxy, pour une utilisation “de base”, ponctuelle, c’est suffisant je pense. De même il est possible de jouer avec les paramètres Google. Depuis la mise en ligne, j’ai rajouté le paramètre &filter=0, ce qui peut donner des résultats un peu différent par rapport à une recherche dans son navigateur puisque le scraper inclura l’index secondaire. 😉

                                                                          2. Stazcek avatar
                                                                            Stazcek

                                                                            Merci pour ce super script (mais je me suis fait 503iser par google 😉

                                                                            Pour avoir le bon nombre de résultat il suffirait de faire une première recherche avec le nombre approximatif (qui d’expérience est toujours largement plus large que la réalité, surtout avec un site:) puis de faire une deuxième recherche avec un start avec ce nombre divisé par 2, on obtient une vraie réévaluation du nombre de résultats. (En tout cas mes différents tests sur quelques sites que je gère, fonctionnent avec cette méthode)

                                                                            pour éviter les 503, une méthode possible serait d’avoir le numéro de page de début en plus, comme ca on peut lancer la recherche en plusieurs étapes, en laissant suffisamment de temps entre chaque demande pour être un gentil utilisateur du web.

                                                                            1. Armand avatar
                                                                              Armand

                                                                              Merci pour tes idées ! C’est certain qu’il y a différents moyens de l’améliorer, là c’est vraiment une version de base. Au moins ça permet à chacun de le personnaliser comme il le souhaite. Et ça revient moins cher qu’un scrapebox pour du scrap occasionnel. 🙂
                                                                              En tout cas ça donne quelques pistes pour ceux qui ne sont pas allergiques au code ! Si un jour je trouve le temps j’essaierai de proposer une version plus aboutie, mais j’ai déjà du mal à trouver le temps de poster de nouveaux articles donc ça ne sera pas pour tout de suite…

                                                                            2. Jean avatar
                                                                              Jean

                                                                              Je suis tombé par hasard sur ton site en recherchant également le moyen de scraper sans outil.
                                                                              Je vais de ce pas essayer ton script voir s’il marche toujours, et surtout, si on ne se fait pas bloquer trop vite.
                                                                              (Suis également tombé sur l’article d’antoine brisset avec les plugins Chrome).

                                                                              Tu l’utilises toujours? et tu prévois de faire un script permettant l’utilisation de proxys?

                                                                              1. Armand avatar
                                                                                Armand

                                                                                Oui je l’utilise toujours, aucun soucis de mon côté. Et si quelqu’un rencontre un dysfonctionnement, je suis toujours prêt à trouver une solution. Pour ce qui est l’utilisation de proxys, disons que c’était prévu et que je m’y mettrai sûrement un jour mais pour le moment je suis pris par d’autres projets donc j’ai un peu mis ça de côté. 😉

                                                                              2. Maxime avatar
                                                                                Maxime

                                                                                Salut Armand, merci pour ces scripts c’est exactement ce que je cherchais. Par contre, ils ne fonctionnent pas chez moi. Lorsque je valide çà me fait un refresh de la page …

                                                                                1. Armand avatar
                                                                                  Armand

                                                                                  Salut Maxime, je viens de retester les deux scripts et aucun problème chez moi… Une collègue de promo rencontrait un problème similaire (au boulot ça faisait la même chose que toi, chez elle ça fonctionnait…) mais au final on n’a pas identifié le problème.
                                                                                  Tu utilises le script en local (wamp, easyphp… ?) ou tu l’as uploadé sur un serveur ? Si ce n’est pas déjà fait, tu devrais peut être essayer une autre solution : si tu utilises easyphp, teste wamp… si ça fonctionne c’est que ça doit venir d’un module à activer je pense…

                                                                                2. SADOUKI Fatiha avatar
                                                                                  SADOUKI Fatiha

                                                                                  Merci pour cet aide, je vais tester ces scripts et vous donner mes remarques.

                                                                                  1. SADOUKI Fatiha avatar
                                                                                    SADOUKI Fatiha

                                                                                    Bonjour,
                                                                                    Merci pour ces scripts c’est exactement ce que je cherchais et ça marche bien.

                                                                                    1. Florian avatar
                                                                                      Florian

                                                                                      Excellent et très utile ce script. Merci pour le partage.

                                                                                      1. olivier avatar
                                                                                        olivier

                                                                                        Bonjour,
                                                                                        le script ne donne pas de résultats, la textbox reste vide. Est-ce qu’il y a une nouvelle version ?
                                                                                        Merci

                                                                                        1. Armand avatar
                                                                                          Armand

                                                                                          Bonjour,
                                                                                          Je viens de retester le script présent sur le site et de mon côté il fonctionne toujours.
                                                                                          L’avez-vous testé en local ? Ou l’avez-vous mis en ligne ?
                                                                                          Je sais qu’une autre personne a déjà rencontré ce problème mais je n’arrive pas à l’expliquer. Je me demande si ce n’est pas du au fait que le serveur utilisé ne supporte pas “curl”… Si vous l’avez essayé en local, je vous conseille de l’essayer en ligne ou en utilisant un autre logiciel. (de mon côté, il n’y a aucun problème avec WAMP)

                                                                                        2. Abdellaziz avatar
                                                                                          Abdellaziz

                                                                                          est-ce-que c’est possible d’y inclure d’autre site comme exemple youtube ?

                                                                                          1. Xavier avatar
                                                                                            Xavier

                                                                                            Bonjour, le script ne fonctionne plus :/ Y a t-il un MAJ à faire ?

                                                                                            => la textbox reste vide.

                                                                                            Je l’ai installé sur mon serveur et rien n’y fait :/

                                                                                            Pouvez-vous m’aider svp ?

                                                                                            merci d’avance

                                                                                            1. Armand avatar
                                                                                              Armand

                                                                                              De mon côté le script fonctionne toujours. Il semblerait que chez certaines personnes le script ne fonctionne pas mais je n’ai toujours pas réussi à identifier d’où venait le problème. Peut-être une histoire de composant PHP qui n’est pas activé… Ce que je peux vous conseiller c’est de l’essayer sur un autre serveur (même en local) pour voir si vous rencontrez le même problème.

                                                                                              1. julien avatar
                                                                                                julien

                                                                                                Merveilleux, c’est le genre de découverte que l’on trouve et qui vous facilite grandement la vie enfin si je ne rencontre pas d’embuche de mon côté après l’avoir essayé.
                                                                                                Sinon il y a la technique avec MOZbar et le scrap de 100 résultats sur la page des SERPS avec ce code à ajouter en fin d’URL une fois la requête lancée &num=100&filter=0 puis on relance la requête et hop une page bien remplie, un coup d’export avec la toolbar de moz ou SEO Quake et le tour et joué. L’inconvénient c’est qu’il faut réitérer la manipulation.

                                                                                                1000 merci

                                                                                                1. Lionel avatar
                                                                                                  Lionel

                                                                                                  Bonjour
                                                                                                  Comme beaucoup, je suis “tombé” sur votre page. Très intéressant.
                                                                                                  J’ai besoin d’importer tous les résultats d’une recherche Google dans une feuille Google Sheet. Avec IMPORTXML, cela fonctionne.
                                                                                                  Pour que les résultats soient neutres et en français, j’ai bien placé “&pws=0&gl=fr”.
                                                                                                  Existe-t-il une syntaxe à placer dans l’URL de recherche permettant d’afficher également les pages des résultats omis?
                                                                                                  Je vous remercie

                                                                                                  1. Armand avatar
                                                                                                    Armand

                                                                                                    Bonjour,
                                                                                                    Normalement le paramètre est déjà en place dans le script, il s’agit de “&filter=0” et, sauf erreur de ma part, c’est toujours valable !

                                                                                                  2. François avatar
                                                                                                    François

                                                                                                    Bonjour,
                                                                                                    Ce programme est-il toujours d’actualité ?
                                                                                                    Le résultat de la recherche est vide une fois la recherche faite.

                                                                                                    Merci de votre réponse,

                                                                                                    1. Armand avatar
                                                                                                      Armand

                                                                                                      Bonjour,
                                                                                                      Effectivement, le script ne fonctionne plus. Pour le moment, je ne peux pas chercher d’où ça vient… J’essaierai de trouver l’origine du problème quand j’en aurai l’occasion.

                                                                                                    2. Besson François avatar
                                                                                                      Besson François

                                                                                                      Bonjour,

                                                                                                      Le problème ne vient pas du changement de Xampp, Wamp, Mamp … J’ai testé les trois et rien n’y fait.
                                                                                                      Je vais essayer de regarder directement dans le code voir d’où vient le problème, je vous tiens au courant.

                                                                                                      Merci.

                                                                                                      1. Robbino avatar
                                                                                                        Robbino

                                                                                                        Bonjour Armand,

                                                                                                        Je commence actuellement un projet ou j’ai besoin d’un script comme le tiens, je suis débutant mais mon tuteur de stage me demande de lui faire un logiciel pouvant scraper via des url google… un peu compliqué à programmer pour un débutant lol

                                                                                                        Ton script m’intéresse énormément mais il m’annonce que la variable $q n’est pas défini … est-ce que tu saurais comment je peux régler ça ?

                                                                                                        Merci pour ton aide
                                                                                                        à bientôt !

                                                                                                        1. Armand avatar
                                                                                                          Armand

                                                                                                          Bonjour,

                                                                                                          Concernant $q, je n’arrive pas à reproduire le problème. La variable représente les mots-clés saisis par l’utilisateur. De mon côté, si les mots-clés sont bien saisis, il n’y a aucune erreur ; sinon le message “Veillez à remplir les champs correctement.” s’affiche. Donc, de ce côté-là, ça fonctionne correctement.

                                                                                                          Par contre, le script ne fonctionne plus depuis 2019 (comme écrit en fin d’article) et je n’ai pas pris le temps de chercher comment régler le problème. Je pense que ça doit venir de preg_match_all (le pattern a du changer) si ça peut t’aiguiller pour ton script.

                                                                                                        Laisser un commentaire