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
Articles liés :- Google propose d’afficher les résultats de recherche en anglais pour certaines requêtes
- Référencement Google, nouvel ajout dans les résultats ?
Catégorie: Scraping, Scripts PHP
- Ajouter cet article à :
- Del.icio.us -
- Digg
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’à ![]()















