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://www.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://www.armandphilippot.com/">référenceur web</a>.</p>
	</div>
</body>

</html>

Script sans CSS ni Javascript

<?php
// Script PHP par Armand Philippot - https://www.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://www.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

73 réponses à “Script pour extraire les URL des résultats de Google”

S'abonner aux commentaires

  1. Commentaire 4 écrit par razbithume

    Publié le :

    Merci pour le script 🙂

    Google docs peut également servir de scraper, en utilisant les fonctions importxml.

    1. Commentaire 5 écrit par Armand

      Avatar - Armand
      Auteur
      Publié le :

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

  2. Commentaire 6 écrit par Christian

    Publié le :

    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. Commentaire 7 écrit par Armand

      Avatar - Armand
      Auteur
      Publié le :

      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. 😉

  3. Commentaire 8 écrit par @Vince_retweet

    Avatar - @Vince_retweet
    Publié le :

    Merci pour le partage : code et dofollow.
    ça va scrapper dur

  4. Commentaire 9 écrit par SeoBlack Inside

    Publié le :

    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. Commentaire 10 écrit par Armand

      Avatar - Armand
      Auteur
      Publié le :

      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 !)

  5. Commentaire 11 écrit par @Vince_retweet

    Avatar - @Vince_retweet
    Publié le :

    Pour une utilisation peu intensive est-qu’un VPN suffit ?

    1. Commentaire 12 écrit par Armand

      Avatar - Armand
      Auteur
      Publié le :

      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.

  6. Commentaire 13 écrit par Maë

    Avatar - Maë
    Publié le :

    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. Commentaire 14 écrit par Armand

      Avatar - Armand
      Auteur
      Publié le :

      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)

  7. Commentaire 15 écrit par Leréférenceur

    Avatar - Leréférenceur
    Publié le :

    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.

  8. Commentaire 16 écrit par Angkor

    Publié le :

    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 !

  9. Commentaire 17 écrit par Armand

    Avatar - Armand
    Auteur
    Publié le :

    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. 😉

  10. Commentaire 18 écrit par AxeNet

    Publié le :

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

    Sylvain

  11. Commentaire 19 écrit par Michel

    Publié le :

    Et pour les personnes qui ne sont pas développeurs, elles font comment pour exécuter le script ? : )

    1. Commentaire 21 écrit par Armand

      Avatar - Armand
      Auteur
      Publié le :

      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. 😉

  12. Commentaire 20 écrit par Daniel

    Publié le :

    Avec une petite armée de proxies ce script sera parfait. Un partage fort utile !

  13. Commentaire 22 écrit par Penguinzophren

    Avatar - Penguinzophren
    Publié le :

    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 😉

  14. Commentaire 23 écrit par Pierre

    Publié le :

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

  15. Commentaire 24 écrit par Arnaud

    Publié le :

    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!

  16. Commentaire 25 écrit par Clément

    Publié le :

    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 🙂

  17. Commentaire 26 écrit par Webmaster

    Avatar - Webmaster
    Publié le :

    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. Commentaire 27 écrit par Armand

      Avatar - Armand
      Auteur
      Publié le :

      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.

  18. Commentaire 28 écrit par Esteban

    Avatar - Esteban
    Publié le :

    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. Commentaire 29 écrit par Armand

      Avatar - Armand
      Auteur
      Publié le :

      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.

  19. Commentaire 30 écrit par Jessy

    Avatar - Jessy
    Publié le :

    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 😉

  20. Commentaire 31 écrit par Robin

    Publié le :

    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. Commentaire 32 écrit par Armand

      Avatar - Armand
      Auteur
      Publié le :

      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 ».

  21. Commentaire 33 écrit par kriss

    Avatar - kriss
    Publié le :

    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 ! 😉

  22. Commentaire 34 écrit par greg

    Avatar - greg
    Publié le :

    Trop bien pour faire des petites recherches de WPMU 🙂

    Merci beaucoup !

  23. Commentaire 35 écrit par greg

    Avatar - greg
    Publié le :

    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. 😉

  24. Commentaire 36 écrit par Armand

    Avatar - Armand
    Auteur
    Publié le :

    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 ?

  25. Commentaire 37 écrit par Gaëlle

    Avatar - Gaëlle
    Publié le :

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

  26. Commentaire 38 écrit par Armand

    Avatar - Armand
    Auteur
    Publié le :

    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…

  27. Commentaire 39 écrit par Xavier

    Avatar - Xavier
    Publié le :

    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)

  28. Commentaire 40 écrit par Armand

    Avatar - Armand
    Auteur
    Publié le :

    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)

  29. Commentaire 42 écrit par Rémi

    Publié le :

    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. Commentaire 43 écrit par Armand

      Avatar - Armand
      Auteur
      Publié le :

      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.

  30. Commentaire 44 écrit par Arthur

    Avatar - Arthur
    Publié le :

    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

  31. Commentaire 46 écrit par Maë

    Avatar - Maë
    Publié le :

    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. Commentaire 47 écrit par Armand

      Avatar - Armand
      Auteur
      Publié le :

      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. 😉

  32. Commentaire 48 écrit par Nassiba

    Avatar - Nassiba
    Publié le :

    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. Commentaire 49 écrit par Armand

      Avatar - Armand
      Auteur
      Publié le :

      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…

  33. Commentaire 50 écrit par Nassiba

    Avatar - Nassiba
    Publié le :

    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. Commentaire 51 écrit par Armand

      Avatar - Armand
      Auteur
      Publié le :

      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à…

  34. Commentaire 52 écrit par Nassiba

    Avatar - Nassiba
    Publié le :

    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. Commentaire 53 écrit par Armand

      Avatar - Armand
      Auteur
      Publié le :

      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. 🙂

  35. Commentaire 54 écrit par François-Olivier

    Publié le :

    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. Commentaire 55 écrit par Armand

      Avatar - Armand
      Auteur
      Publié le :

      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. 😉

  36. Commentaire 56 écrit par Stazcek

    Avatar - Stazcek
    Publié le :

    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. Commentaire 57 écrit par Armand

      Avatar - Armand
      Auteur
      Publié le :

      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…

  37. Commentaire 58 écrit par Jean

    Avatar - Jean
    Publié le :

    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. Commentaire 59 écrit par Armand

      Avatar - Armand
      Auteur
      Publié le :

      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é. 😉

  38. Commentaire 60 écrit par Maxime

    Avatar - Maxime
    Publié le :

    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. Commentaire 61 écrit par Armand

      Avatar - Armand
      Auteur
      Publié le :

      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…

  39. Commentaire 62 écrit par SADOUKI Fatiha

    Avatar - SADOUKI Fatiha
    Publié le :

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

  40. Commentaire 63 écrit par SADOUKI Fatiha

    Avatar - SADOUKI Fatiha
    Publié le :

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

  41. Commentaire 64 écrit par Florian

    Avatar - Florian
    Publié le :

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

  42. Commentaire 65 écrit par olivier

    Avatar - olivier
    Publié le :

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

    1. Commentaire 66 écrit par Armand

      Avatar - Armand
      Auteur
      Publié le :

      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)

  43. Commentaire 67 écrit par Abdellaziz

    Avatar - Abdellaziz
    Publié le :

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

  44. Commentaire 68 écrit par Xavier

    Avatar - Xavier
    Publié le :

    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. Commentaire 69 écrit par Armand

      Avatar - Armand
      Auteur
      Publié le :

      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.

  45. Commentaire 70 écrit par hamza

    Avatar - hamza
    Publié le :

    comment ajouté un id a chaque ligne de résultat (chaque lien) ??
    merci

  46. Commentaire 71 écrit par julien

    Publié le :

    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

  47. Commentaire 72 écrit par Lionel

    Avatar - Lionel
    Publié le :

    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. Commentaire 73 écrit par Armand Philippot

      Publié le :

      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 !

  48. Commentaire 74 écrit par François

    Avatar - François
    Publié le :

    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. Commentaire 75 écrit par Armand

      Avatar - Armand
      Auteur
      Publié le :

      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.

  49. Commentaire 76 écrit par Besson François

    Avatar - Besson François
    Publié le :

    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.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *