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
Commentaires (29)
Catégorie: Scraping,Scripts PHP
- Ajouter cet article à :
- Del.icio.us -
- Digg
