Extraire les urls des résultats de Google

Ecrit par admin le Dimanche 26 octobre 2008 à 15:12 - Catégorie Scraping, Scripts PHP

Comment extraire / parser les urls de résultats de recherche de Google ?

Cela fait plusieurs fois qu’on me demande comment extraire les urls de résultats de recherche de Google dans le but de les utiliser pour diverses raisons : recherche de pages de soumission d’annuaires, recherche des pages de blog avec commentaires, pages de forums, commande link ou site…

Voici donc un script php qui permet d’extraires ces urls de Google.

Différentes options sont proposées, comme le nombre de pages à extraire ou le moteur Google où se fera l’extraction ainsi que la langue du moteur.

Code source du script :

Voici le code du script php à copier/coller dans un fichier et à uploader sur votre serveur ou à utiliser en local :

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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
<?php
//Script php : Extraction urls Résultats Google
// Copyrights 2008 Seoblackout.com
//http://www.seoblackout.com	
//Url script : http://www.seoblackout.com/2008/10/26/extraire-resultats-google/
 
@set_time_limit(0);
$useragent='Mozilla/5.0';
$regex='<h3 class=r>';
//extension et langue google
if ((isset($_POST['ext'])) && ($_POST['ext']!='')) 
{
	$ext=strip_tags($_POST['ext']);
	if ($ext=='fr') {
	$lang='fr';
	}
	else if ($ext=='com') {
	$lang='en';
	} 
	else if ($ext=='es') {
	$lang='es';
	}
	else if ($ext=='de') {
	$lang='de';
	}
	else if ($ext=='ca') {
	$lang='en';
	}
	else if ($ext=='ca2') {
	$ext='ca';
	$lang='fr';
	}
	else {
	$ext='fr';
	$lang='fr';
	}
}
else 
{
	// par défaut, on recherche sur google.fr et lang=fr
	$ext='fr';
	$lang='fr';
}
//nombre de page à extraire :
if ((is_numeric($_POST['pages'])) && ($_POST['pages']!='')) 
{
	$c=(strip_tags($_POST['pages'])-1);
}
else 
{
	//10 pages par défaut, on part de 0 donc 10 pages = 9
	$c=9;
}
 
if ((isset($_POST['kw'])) && ($_POST['kw']!='')) 
{
	$kw=trim(strip_tags($_POST['kw']));
	$pagenum = 0;			
	$googlefrurl = "http://www.google.".$ext."/search?hl=".$lang."&q=" . urlencode($kw) . "&start=$pagenum";
	$url_new = '';
 
	while($pagenum <= $c) 
	{
			if (function_exists('curl_init')) 
			{
				$ch = curl_init();
				curl_setopt($ch, CURLOPT_USERAGENT, $GLOBALS['useragent']);
				curl_setopt($ch, CURLOPT_URL,$googlefrurl);
				curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
				$result=curl_exec ($ch);
				curl_close ($ch);
			} 
			else 
			{
				$result= file_get_contents($googlefrurl);
			} 	
		preg_match_all('/'.$regex.'<a href="(.*?)"/si', $result, $matches);
			$i = 0;
			$n = count($matches[1]);
			$pagenum++;
			$pagenum2 = $pagenum.'0';
			$googlefrurl = "http://www.google.".$ext."/search?hl=".$lang."&q=" . urlencode($kw) . "&start=$pagenum2&safe=off&pwst=1&filter=0";
 
			while($i <= $n) 
			{
				$url_new1 = addslashes($matches[1][$i]);
				$url_new .= trim($matches[1][$i])."<br>";
				$i++;
				flush();
			}
	}
	$url_new .= '';				
}
?>
<!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>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Extraction Urls résultats Google</title>
</head>
<body>
<h1>Extraction Urls résultats Google</h1>
<div>
<?php 
if ((isset($_POST['kw'])) && ($_POST['kw']!='')) {
	echo "<h3>Keyword : ",strip_tags($kw),"</h3>";
	echo "<h6>Google Results</h6>";
	echo str_replace('<br><br>','<br>',$url_new); 
}
?>
<form method="POST" action="<?php echo strip_tags($_SERVER['REQUEST_URI']) ;?>">
<p>Saisir vos mots-clés :</p>
<input name="kw" type="text" size="100" value="<?php if (isset($_POST['kw'])) {echo strip_tags($kw);} ?>">
<p>Nombre de pages à extraire (optionel => 10 pages par défaut):</p>
<input name="pages" type="text" size="3" maxlength="3" value="<?php if (isset($_POST['pages'])) {echo strip_tags($_POST['pages']);} else {echo '10';} ?>">
<p>Moteur :</p>
<select name="ext">
<option value="fr"<?php if (($_POST['ext'])=='fr') {echo ' selected';} ?>>Google.fr (hl=fr)</option>
<option value="com"<?php if (($_POST['ext'])=='com') {echo ' selected';} ?>>Google.com (hl=en)</option>
<option value="es"<?php if (($_POST['ext'])=='es') {echo ' selected';} ?>>Google.es (hl=es)</option>
<option value="de"<?php if (($_POST['ext'])=='de') {echo ' selected';} ?>>Google.de (hl=de)</option>
<option value="ca"<?php if (($_POST['ext'])=='ca') {echo ' selected';} ?>>Google.ca (hl=en)</option>
<option value="ca2"<?php if (($_POST['ext'])=='ca2') {echo ' selected';} ?>>Google.ca (hl=fr)</option>
</select>
<p><input type="submit" value="Go" name="go">
<input type='button' value='Annuler' onclick='location.href="<?php echo strip_tags($_SERVER['REQUEST_URI']) ;?>"'></p>
</form>
<br />
<small>Script proposé par SEO BlackOut : <a href="http://www.seoblackout.com/">référencement</a></small>
</div>
</body>
</html>

Démo :

Dans la démo, le nombre de résultats extraits est limité à 3 pages uniquement !

http://www.seoblackout.com/scripts/extraire-urls-google.php

Ces icones representent les sites de bookmarking social dans lesquels vos lecteurs peuvent partager et faire découvrir vos pages.
  • Scoopeo
  • Digg
  • Technorati
  • del.icio.us
  • blogmarks
  • BlogMemes Fr
  • MisterWong Fr
  • Nuouz
  • Pioche
  • StumbleUpon
  • Tapemoi
  • Tutmarks
  • Wikio
  • Netscape
  • Bruxello
  • Blogasty
Articles liés :

Catégorie: Scraping, Scripts PHP


11 Commentaires

Commentaire par Mode enfant Magazine (2 commentaires)

Dimanche, 26 octobre , 2008 à 23:38

Bon script ;)
Attention cependant au captcha pour requêtes automatisées :)

Commentaire par admin

Lundi, 27 octobre , 2008 à 0:06

Yep à utiliser en local si ip variable ou faire tourner sur différents serveurs ou passer par proxy ou ne pas abuser… ou connaitre les techniques secrètes ;)

Commentaire par tictact

Lundi, 27 octobre , 2008 à 12:52

très bon script
thanks paulo

Commentaire par guizme555

Lundi, 27 octobre , 2008 à 17:46

Merki encore une fois pour ce script :) Je fais tourner !

Commentaire par Rudy (1 commentaire)

Mardi, 28 octobre , 2008 à 22:14

Yo :)

En voyant le titre je me suis dit cool voila du contenu :p
Mais en testant je me suis rendu compte que le script recupère les url uniquement,a quoi ca sert ?

J’ai cru qu’avec on pouvait choper le contenu des 1ers pages de résultats

Commentaire par Louis-Philippe Huberdeau (1 commentaire)

Mardi, 28 octobre , 2008 à 22:25

Tu peux te sauver beaucoup d’effort en utilisant les API

Commentaire par admin

Mercredi, 29 octobre , 2008 à 2:10

@Louis-Philippe Huberdeau : l’api est intéressante, mais pas pour l’usage souhaité ici, api limitée…

@Rudy, ça sert à te faire de belles listes d’urls à spammer automatiquement par exemple.

Commentaire par lo

Mercredi, 29 octobre , 2008 à 9:28

Parfait. Merci pour ce script !

Commentaire par Karedas (1 commentaire)

Mercredi, 29 octobre , 2008 à 13:37

J’ai cru qu’avec on pouvait choper le contenu des 1ers pages de résultats
Une fois que tu as les urls stockés, facile de faire un script spider qui va les explorer et en extraire le contenu.
Il vaut mieux éviter extraction google et crawl en meme temps sans quoi t’en a vite pour plusieurs minutes de travail par recherche.

Je suis très, mais alors très très, surpris que SEO BLACKOUT ne sache pas que, pour éviter le ban de l’ip par google, il suffit de remplacer ’search’ par ‘custom’.

Commentaire par admin

Jeudi, 30 octobre , 2008 à 0:11

T’inquiètes Karedas, on utilise custom aussi qui au passage n’est pas suffisant, il ne suffit pas de remplacer custom par search, il y a d’autres paramètres à passer pour ne pas se faire bloquer mais ça on le garde en interne, ou alors je laisse le développeur du script le présenter sur SEO Blackout s’il le souhaite ;) (mais ça m’étonnerait qu’il accepte…)

Commentaire par BlackMelvyn (10 commentaires)

Vendredi, 31 octobre , 2008 à 16:35

En effet, même s’il y a un intérêt pédagogique très important, les meilleures astuces Black Hat sont aussi les moins connues ;)
Peut-être que nous présenterons le script plus tard car la méthode est intéressante, mais pour le moment, c’est un peu trop précieux à mes yeux pour le dévoiler au public… et n’oublions pas qu’ici c’est aussi Don’t be evil
Sorry ;)
Je pense cependant que Paul en a méchamment aidé ici avec ce script y’a plus qu’à :lol:

Laisser un commentaire

XHTML: Vous pouvez utiliser les tags suivants: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>



SEO BLACKOUT

Site web dédié aux techniques de référencement et de positionnement de sites web.
Certaines parties du site sont en accès restreint, ces espaces sont réservés à la SEO Black Hat Team.


Don't Be Evil !