Formation référencement

Google Suggest – Script php (Nouvelle version)

Ecrit par admin le mercredi 27 janvier 2010 à 14:25 - Catégorie Google,Scripts PHP

Il y a quelques jours, nous vous présentions un outil nommé Google Suggest php script permettant d’extraire les suggestions proposées par Google à partir d’un mot-clé, les résultats ainsi obtenus étaient à nouveau extraits et ainsi de suite selon le niveau de profondeur défini par l’utilisateur du script (jusqu’à 5 niveaux).

Et bien, aujourd’hui nous vous proposons en plus les options suivantes :

  • Gestion de listes de mots
  • Intégration de mots mixés
  • Test de mots + lettres de l’alphabet
  • Récupération du nombre de résultats

Voici le script php google suggest nouvelle version :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
<?php
//Script Google Suggest by http://www.seoblackout.com
// Auteurs du script : Beunwa http://divioseo.fr/ & Tiger http://www.seoblackout.com
// Contributeurs émérites : Seg http://www.wagablog.com/ & Meuhsli http://www.thugeek.com/
// Url article du script pour bugs, commentaires... : http://www.seoblackout.com/2010/01/27/google-suggest/
?>
<form  action="" method="post">
	<table><tr><td>
		Keyword : <textarea name="kw" rows="10"><?=strip_tags($_POST['kw'])?></textarea>
	</td><td>
		et <textarea name="mix2" rows="10"><?=strip_tags($_POST['mix2'])?></textarea>
	</td><td>
		<br />
		Langue : 
		<select name="lang">
			<option value="fr">FR</option>
			<option value="en">EN</option>
		</select>
		<br />
		Profondeur : 
		<select name="depth">
			<option value="1">1</option>
			<option value="2">2</option>
			<option value="3">3</option>
			<option value="4">4</option>
			<option value="5">5</option>
		</select>  
		<br />
		Alphabet :<input type="checkbox" name="alph" />
	</td></tr></table>
	<br />
	<input type="submit" value="Go" />
</form>
<?php
if(isset($_POST['kw'])){
	$lang = strip_tags($_POST["lang"]);
	if($lang == '') $lang = "fr"; 
	$depth = strip_tags($_POST["depth"]);
	if($depth == '') $depth = "1";
 
	$kwsd = array();
	$kwsd=explode("\n",trim(strip_tags($_POST["kw"])));
	foreach ($kwsd as $lst) {
		if($lst != "\n"){
			//mots cles simple
			ggSuggest($lst, $lang, $depth);
 
			//mots cles avec compléments
			$kws2 = array();
			$kws2=explode("\n",strip_tags($_POST["mix2"]));
			foreach ($kws2 as $mix2) {
				ggSuggest($lst.$mix2, $lang, $depth);
			}
 
			//alphabet
			if(strip_tags($_POST["alph"]) == "on"){
				$alpha = "a";
				while($alpha != "z"){
					ggSuggest($lst.' '.$alpha, $lang, $depth);
					$alpha = ++$alpha;
				}
			}
		}
	}
 
}
 
function ggSuggest($kw, $lang, $depth = 1, $inc = 1){	
	global $tabKw;
 
	$tabKw[] = $kw;	
    $url = 'http://www.google.com/complete/search?hl='.$lang.'&js=true&qu='. urlencode($kw);
	if (function_exists('curl_init')) {
	$header = array(
        "Accept: text/xml,application/xml,application/xhtml+xml,
		text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5",
        "Accept-Language: fr-fr,fr;q=0.7,en-us;q=0.5,en;q=0.3",
        "Accept-Charset: utf-8;q=0.7,*;q=0.7",
        "Keep-Alive: 300");
		$ch = curl_init();
	    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
	    curl_setopt($ch, CURLOPT_HEADER, false);
	    curl_setopt($ch, CURLOPT_VERBOSE, true);	
	    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
	    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
	    curl_setopt($ch, CURLOPT_REFERER, 'http://www.google.com/');
	    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)' );
	    curl_setopt($ch, CURLOPT_HTTPHEADER, $header );
	 	curl_setopt($ch, CURLOPT_URL, $url);
		$result=curl_exec ($ch);
		curl_close ($ch);
	} else {
		$result= file_get_contents($url);
	}
	preg_match_all('/\["(.*?)",/si', $result, $kwgoogle, PREG_SET_ORDER);//mot
	preg_match_all('/\,"(.*?)résultats",/si', $result, $nbresult, PREG_SET_ORDER);//nb resultats
 
	if ($kwgoogle=='' || $inc > $depth) {
		return $tabKw;
	}else {
		$ii = 0;
		foreach($kwgoogle as $v){	
			$tk = utf8_decode(strip_tags($v[1]));
			if(!in_array($tk, $tabKw)){ 
				$tk = str_replace ('\r',"", $tk);
				$kwr = utf8_decode($nbresult[$ii][1]);
				if($kwr == "") $kwr = 0;
				echo $kwr.' ; '.$tk.'<br />';
				$ii++;
				flush();
				ggSuggest($tk, $lang, $depth, $inc+1); 
			}
		}
	}
	return $tabKw;
}
?>

Un grand merci à  Seg (Wagablog – Google Analytics) et Meuhsli (Blog Geek) de l’agence référencement Résoneo, qui nous proposent ici une contribution majeure. 

Merci encore une fois à Beunwa (Référencement Dijon), pour avoir contribué au développement du script Google Suggest. 

Merci à eux 3 pour avoir accepté de partager publiquement et gratuitement avec vous ces améliorations !

Le web est un lieu de partage, keep this spirit !

A lire à propos de Google Suggest chez copains :

Commentaires (37)

Catégorie: Google,Scripts PHP

Php Scraping avec fonctions DOM et Xpath

Ecrit par lemoussel le lundi 25 janvier 2010 à 22:15 - Catégorie Scraping,Scripts PHP

Nous avons vu dans nos différents articles comment extraire/parser le contenu d’une page en utilisant les expressions régulières. La difficulté de cette approche est la maitrise de la rédaction des expressions régulières.

Dans cet article, je vous propose d’essayer une autre méthode par l’utilisation des fonctions DOMDocument et DOMXPath de PHP 5.

La question qui se pose alors : Comment déterminer la structure DOM d’un document HTML ?  Cela ne va t’il pas être plus compliqué que les expressions régulières ?

La réponse est non ! En effet avec le plug-in Firebug pour FireFox, l’exploration de la structure DOM d’une page HTML est très simple. Pour ce faire, nous allons reprendre l’exemple d’extraction des  backlinks référencés par Alexa avec le petit blog de geektitude Insolite du Geek.

Sous FireBug, il suffit de sélectionner la première URL (1), le chemin Xpath s’affiche alors (2). Il nous suffit “Copier le chemin XPath” (3).

Nous obtenons le chemin XPath (2) suivant :  /html/body/div/div/div[3]/div/div/div/div/div/ol/li/div/p/a

Et voilà le plus dur est fait ! Il suffit juste d’intégrer la requête XPath dans le script PHP suivant :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Scraping avec DOMDocument & DOMXpath</title>
</head>
<body>
<?php
// Alexa Sites Linking to Insolite-du-Geek
$url = 'http://www.alexa.com/site/linksin;0/www.insolite-du-geek.fr';
$queryXPath = '/html/body/div/div/div[3]/div/div/div/div/div/ol/li/div/p/a';
 
$dom = new DOMDocument();
@$dom->loadHTMLFile($url);
$x = new DOMXPath($dom);
$nodeList = $x->query($queryXPath );
foreach ($nodeList as $node) 
	echo utf8_decode(urldecode($node->nodeValue))."<br/>";
?>
</body>
</html>

7 lignes de code PHP pour réaliser un scraping de page HTML.

Remarques :

  1. Noter la présence du @ devant la fonction loadHTMLFile(). Cela évite d’avoir les messages de Warning PHP de défaut de structure DOM du document HTML.
  2. J’ai remarqué que dans certains cas Firebug, insére pour la balise <table> la balise <tbody>. Cette balise n’étant pas présente dans le document, il faut la supprimer de la requête XPath sinon aucun résultat ne sera obtenu.

Sources :

W3C Recommendation : XPath 1.0 standard

Plus d’informations sur XPath : Xpath Tutorial

Commentaires (16)

Catégorie: Scraping,Scripts PHP

Référencement : Google Suggest script PHP

Ecrit par admin le mercredi 20 janvier 2010 à 12:20 - Catégorie Scripts PHP

Le script google suggest a été mis à jour, vous pouvez consulter la nouvelle version ici : Google suggest, mais avant, je vous suggère de consulter le texte ci-dessous.

Tout le monde ou presque connait Google Suggest, qui suggère automatiquement des termes de recherche au fur et à mesure que l’on saisit notre requête, à chaque fois que l’on tape une lettre supplémentaire, la liste est modifiée. Cet outil fournit également, à côté de chaque suggestion, une estimation du nombre de résultats sur google que renvoit chaque mot-clé de la liste.

Les mots-clés proposés correspondent « soit-disant » aux recherches que font fréquemment les internautes (d’où l’intérêt pour les référenceurs).

Google Suggest

Le script Google suggest que nous vous proposons, permet à partir d’un mot-clé, de trouver toutes les suggestions faites par Google pour ce mot-clé et les mots-clés trouvés et ainsi de suite selon la profondeur d’analyse choisie.

Par exemple, si je saisis référencement, le script va extraire toutes les propositions de mots-clés en partant de référencement et pour chaque mot-clé trouvé, le script va à nouveau extraire les mots-clés correspondants et ainsi de suite.
Ce script va ensuite éliminer les doublons pour vous proposer une liste unique de mots-clés.

Script php Google suggest :

Copiez le code ci-dessous dans un fichier que vous nommez google-suggest.php par exemple et uploadez-le sur votre FTP, il vous suffit ensuite d’appeler ce fichier pour trouver un max de mots-clés pour votre long tail 🙂

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
//Script Google Suggest by http://www.seoblackout.com
// Auteurs du script : Beunwa http://divioseo.fr/ & Tiger http://www.seoblackout.com
// Url article du script pour bugs, commentaires... : http://www.seoblackout.com/2010/01/20/referencement-google-suggest/
//le script affiche les resultats au fur et a mesure mais les renvois aussi dans un tableau au besoin
?>
<form  action="" method="post">
	Keyword : <input name="kw" type="text" value="<?php echo strip_tags($_POST['kw']); ?>" />
	<br />
	Langue : 
	<select name="lang">
		<option value="fr">FR</option>
		<option value="en">EN</option>
	</select>
	<br />
	Profondeur : 
	<select name="depth">
		<option value="1">1</option>
		<option value="2">2</option>
		<option value="3">3</option>
		<option value="4">4</option>
		<option value="5">5</option>
	</select>
	<br />
	<input type="submit" value="Go" />
</form>
<?php
if(isset($_POST['kw'])){
	$kw = strip_tags(utf8_encode($_POST["kw"]));
	$lang = strip_tags($_POST["lang"]);
	if($lang == '') $lang = "fr";
	$depth = strip_tags($_POST["depth"]);
	if($depth == '') $depth = "1";
 
	ggSuggest($kw, $lang, $depth);
}
 
function ggSuggest($kw, $lang, $depth = 1, $inc = 1){	
	global $tabKw;
 
	$tabKw[] = $kw;	
    $url = 'http://www.google.com/complete/search?hl='.$lang.'&js=true&qu='. urlencode($kw);
	if (function_exists('curl_init')) {
	$header = array(
        "Accept: text/xml,application/xml,application/xhtml+xml,
		text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5",
        "Accept-Language: fr-fr,fr;q=0.7,en-us;q=0.5,en;q=0.3",
        "Accept-Charset: utf-8;q=0.7,*;q=0.7",
        "Keep-Alive: 300");
		$ch = curl_init();
	    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, false);
	    curl_setopt($ch, CURLOPT_HEADER, false);
	    curl_setopt($ch, CURLOPT_VERBOSE, true);	
	    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
	    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
	    curl_setopt($ch, CURLOPT_TIMEOUT, 5);
	    curl_setopt($ch, CURLOPT_REFERER, 'http://www.google.com/');
	    curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)' );
	    curl_setopt($ch, CURLOPT_HTTPHEADER, $header );
	 	curl_setopt($ch, CURLOPT_URL, $url);
		$result=curl_exec ($ch);
		curl_close ($ch);
	} else {
		$result= file_get_contents($url);
	}
	preg_match_all('/\["(.*?)",/si', $result, $kwgoogle, PREG_SET_ORDER);
 
	if ($kwgoogle=='' || $inc > $depth) {
		return $tabKw;
	}else {
		foreach($kwgoogle as $v){	
			$tk = utf8_decode(strip_tags($v[1]));
			if(!in_array($tk, $tabKw)){ 
				echo $tk.'<br />';
				flush();
				ggSuggest($tk, $lang, $depth, $inc+1);
			}
		}
	}
	return $tabKw;
}
 
?>

Démo du script Google Suggest :

Pas de démo en ligne, par contre voici le résultat obtenu pour la recherche référencement :

  • référencement
  • referencement
  • referencement gratuit
  • referencement gratuit automatique
  • referencement gratuit google
  • referencement gratuit sans lien retour
  • referencement gratuit site web
  • referencement gratuit sur google
  • referencement gratuit moteurs de recherche
  • referencement gratuit blog
  • referencement gratuit sans lien de retour
  • referencement gratuit annuaire
  • referencement gratuit yahoo
  • referencement google
  • referencement google gratuit
  • referencement google gratuite
  • referencement google site
  • referencement google sitemap
  • referencement google sites
  • referencement google site internet
  • referencement google site joomla
  • referencement google maps
  • referencement google prix
  • referencement google joomla
  • referencement google payant
  • referencement google flash
  • referencement-google.fr
  • referencement google tarif
  • referencement google tarifs
  • referencement newsgroup
  • referencement newsgroups
  • referencement newsgroup francais
  • referencement newsgroup binaire
  • referencement newsgroup binaires
  • referencement newsgroup fr
  • referencement newsgroup free
  • referencement newsgroup gratuit
  • referencement newsgroupe
  • referencement newsgroup us
  • référencement naturel
  • référencement naturel définition
  • referencement naturel google
  • referencement naturel google gratuit
  • référencement naturel seo
  • référencement naturel comment ça marche
  • référencement naturel et payant
  • référencement naturel payant
  • référencement naturel blog
  • référencement naturel internet
  • référencement naturel joomla
  • referencement naturel sur google
  • referencement yahoo
  • referencement yahoo gratuit
  • referencement yahoo.fr
  • referencement site internet
  • referencement site internet gratuit
  • referencement site internet google
  • referencement site internet bordeaux
  • referencement.com
  • referencement.com group
  • referencement.com boursorama
  • referencement site web
  • referencement site web gratuit
  • referencement site web google
  • referencement site web tunisie
  • referencement site web pdf
  • referencement site
  • referencement site google
  • referencement site google gratuit
  • referencement site flash
  • referencement site joomla
  • referencement site iweb
  • referencement site free
  • référencement définition
  • référencement définition marketing
  • referencement blog
  • referencement blog gratuit
  • referencement blog google
  • referencement blog wordpress
  • référencement blogs
  • referencement blogspot
  • referencement web
  • referencement web gratuit
  • referencement webmaster
  • referencement webradio
  • referencement web maroc
  • référencement webdev
  • referencement webrankinfo
  • referencement web 2.0
  • referencement web tuto
  • referencement web wikipedia
  • référencement payant
  • référencement payant définition
  • referencement payant google
  • référencement payant prix

Un grand merci à Beunwa du site Création de site Dijon qui a largement amélioré le script de départ 😉

Commentaires (45)

Catégorie: Scripts PHP



SEO BLACKOUT

Site web dédié aux techniques de référencement et de positionnement de sites web sur Google.

Certaines parties du site sont en accès restreint, ces espaces sont réservés à la SEO Black Hat Team.


Don't Be Evil !