Aller au menu - Aller au contenu
Inscris-toi au e-camp "Héberge ton jeu Facebook sur Azure" de Microsoft vendredi 25 mai à 13h30 !

télécharger les résultats de Google

Pour accéder à cette section
Connectez-vous !
connexion_rpx

Offre d'emploi : Développeur Web PHP/Drupal (H/F)

Page 1 
Auteur Message
1 visiteur sur ce sujet (1 Anonyme)
Page 1 
Hors ligne Radioxid # Posté le 01/09/2008 à 23:46:13
about:black please!
Avatar

Ville : Nogent le rotrou
Pays : France métropolitaine

Bonjour, bonsoir, bonne nuit.

Je cherche un utilitaire ou un script ou même une fonction qui me permettrait de télécharger les liens que me retourne Google.

Par exemple: je veux des exemples de fichiers SVG pour diverses raisons (qui se valent sûrment aussi bien les unes que les autres avec cependant un léger avantage pour la seconde.... et puis c'est pas drôle) donc je tape Google: filetype:svg et j'obtient 779 000 résultats en moins d'une seconde (super !). Je suis par exemple un cleptomane schyzophrène (ouah dur celui-là !) et, chez moi c'est chronique, (on trouve les raisons que l'on peut) j'aime beaucoup pomper tout ce que je trouve et là... c'est le drame: il faut que je me tape moi-même les 77 900 pages de résultats ?! (bon d'accord avec DownThemAll, mais quand même !)

Alors j'ai bien pensé à un script qui me trouverai les liens qu'il me faut, qui les enregistres et va sur la page suivante pour recommencer MAIS je ne sais pas comment dire à ce bot comment aller sur la page suivante (hé oui, on ne peut pas tout avoir...) ALORS je me fie à vôtre expérience millénaire, Ô masse informe et pestilentielle débordante de savoir transcendant de bêtise drôlatique et dégoulinante de bons sentiments !

En tout amitié avec la masse, bien sûr...
Merci de ton aide, la masse ^^

PS: Toi aussi tu adores Pierre Desproges ? Ben alors t'es le seul à me lire jusqu'au bout...

The Antipop _ Radio/Video
Le (x)HTML pour les daltoniens !!
Image utilisateur

Vous les voyez, les pommes? Dommage, c'est joli...

 
Publicité # Posté le 01/09/2008 à 23:46:13

Hors ligne mario56 # Posté le 02/09/2008 à 10:50:31
\/!\/3 £3 5|)% !
Groupe : Interdiction d'écriture

Pierre Desproges, celui de "Dictionnaire superflu à l'usage de l'élite et des bien nantis" ?

Sinon, ben, je n'ai pas de réponse pour toi.

Ou alors, tu peux coder toi même ton bot (tu a juste besoin de quelques connaissances et d'un bon algo pour "tourner les pages " de google et enregistrer tes liens). Perso, j'ai déjà fait ce genre de trucs (récupérer le nom et l'introduction de tous les tutos du sdz), et c'est pas facile.

Tous les amis connectés ? C'est possible ! - ($toBe || !$toBe) == this.theQuestion();
Image utilisateur Geek à 84,85%
Image utilisateur Nerd à 48,65%
Image utilisateur Nolife à 28,57%
NOLIFE FOR LIFE !
 
Hors ligne S0pra # Posté le 02/09/2008 à 20:08:09
Avatar

Études : Polytech'Nice-Sophia Antipolis

Salut,
J'ai codé un petit bot en PHP (très) vite fait.
Demain je corrige si je vois des bugs.

Il se limite aux 1000 premiers résultats car :
Citation : Google
Google ne renvoie pas plus de 1000 résultats par requête. Vous avez demandé l'affichage des résultats à partir du numéro 1000.


Code : PHP
 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
<?php
//Bot Google
//By S0pra
//http://www.google.fr/search?q=[SEARCH]&ie=utf-8&oe=utf-8
set_time_limit(0);
if (!empty($_POST['search'])) {
	$fp = fopen(urlencode($_POST['search']).'.txt', 'a');
	$pages = array();
	$i = true;
	$n = 1;
	while ($i && $n <= 10) {
		$pages[$n] = file_get_contents('http://www.google.fr/search?q='.urlencode($_POST['search']).'&hl=fr&client=firefox-a&rls=org.mozilla:fr:official&sa=N&ie=utf-8&oe=utf-8&num=100&filter=0&start='.(string)(($n-1)*100));
		preg_match('#sultats <b>([0-9]*)</b> - <b>([0-9]*)</b>#', $pages[$n], $matches);
		if ((empty($matches) || ($matches[2] - $matches[1]) != 99)) { //Dernière page 
			$i = false;
		}
		
		$n++;
	}
	//echo '<pre>'.$pages[1].'</pre>';
	foreach($pages as $k => $v) {
		preg_match_all('#<a href="([^"]*)" class=l#', $v, $matches);
		foreach($matches[1] as $va) {
			fwrite($fp, $va."\r\n");
		}
	}
	?>
	Rendez dans le fichier <a href="<?php echo urlencode($_POST['search']).'.txt'; ?>"><?php echo urlencode($_POST['search']).'.txt'; ?></a>
	<?php
	fclose($fp);
}
else {
?>
<form action="#" method="POST">
	<input type="text" name="search" />
	<br />
	<input type="submit" name="Go" value="Recherche Google !" />
</form>
<?php
}
?>


A faire tourner en local de préférence.

A+ :D
 
Hors ligne Takeo92 # Posté le 02/09/2008 à 20:09:53
GRENOBLE e BASTA !!
Avatar

Moi je le ferai plutôt en console...
Hors ligne S0pra # Posté le 02/09/2008 à 20:20:08
Avatar

Études : Polytech'Nice-Sophia Antipolis

Citation : Takeo92
Moi je le ferai plutôt en console...


Tu veux dire en CLI (avec PHP) ? ou dans un autre langage (C, C++...) ?
 
Hors ligne Takeo92 # Posté le 02/09/2008 à 20:56:16
GRENOBLE e BASTA !!
Avatar

Citation : S0pra
Citation : Takeo92
Moi je le ferai plutôt en console...


Tu veux dire en CLI (avec PHP) ? ou dans un autre langage (C, C++...) ?


CLI

change juste le html ;-)
Hors ligne S0pra # Posté le 03/09/2008 à 07:55:27
Avatar

Études : Polytech'Nice-Sophia Antipolis

J'étais en train de préparer justement un tuto sur CLI.

Code : PHP
 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
<?php
//Bot Google
//By S0pra
//http://www.google.fr/search?q=[SEARCH]&ie=utf-8&oe=utf-8
set_time_limit(0); //On évites que le script dépasse la limite de temps
if ($argc > 1) { // Si on donne un argument au script
	$fp = fopen(urlencode($argv[1]).'.txt', 'a'); //On créé le fichier
	$pages = array();
	$i = true;
	$n = 1;
	while ($i && $n <= 10) { //On parcourt chaque page de résultat
		$pages[$n] = file_get_contents('http://www.google.fr/search?q='.urlencode($argv[1]).'&hl=fr&client=firefox-a&rls=org.mozilla:fr:official&sa=N&ie=utf-8&oe=utf-8&num=100&filter=0&start='.(string)(($n-1)*100)); //On récupère la source
		preg_match('#sultats <b>([0-9]*)</b> - <b>([0-9]*)</b>#', $pages[$n], $matches); //On regarde quels résultats sont affichés
		if ((empty($matches) || ($matches[2] - $matches[1]) != 99)) { //Si on est à la dernière page (moins de 1000 résultats)
			$i = false; //On sort de la boucle
		}
		
		$n++;
	}
	//echo '<pre>'.$pages[1].'</pre>';
	foreach($pages as $k => $v) { //Pour chaque page de résultat obtenue
		preg_match_all('#<a href="([^"]*)" class=l#', $v, $matches); //On chope tous les liens de résultats
		foreach($matches[1] as $va) {
			fwrite($fp, $va."\r\n"); //On écrit chacun d'entre eux dans un fichier texte
		}
	}

	fclose($fp); //On ferme le fichier
	?>
	Rendez dans le fichier <?php echo urlencode($argv[1]).'.txt'; ?>
	<?php
}
else {
	echo "Passer un parametre de cette maniere : google_cli.php \"Texte de votre recherche\"";
}
?>


A+

EDIT : Code (trop :-° ) commenté !
Édité le 07/09/2008 à 22:26:15 par S0pra
 
Hors ligne Radioxid # Posté le 04/09/2008 à 18:11:10
about:black please!
Avatar

Ville : Nogent le rotrou
Pays : France métropolitaine

Merci infiniment de ton aide, la Masse. Mais je piges pas trop l'endroit où tu "ouvres" les pages de résultats...

Comment tu fais ?

The Antipop _ Radio/Video
Le (x)HTML pour les daltoniens !!
Image utilisateur

Vous les voyez, les pommes? Dommage, c'est joli...

 
Hors ligne S0pra # Posté le 05/09/2008 à 08:23:09
Avatar

Études : Polytech'Nice-Sophia Antipolis

J'ouvres les résultats ligne 12 avec la fonction file_get_contents

P.S. : Je suis pas sûr que la question s'adressait à moi (la Masse ??)

A+ :D
 
Hors ligne Radioxid # Posté le 05/09/2008 à 21:48:34
about:black please!
Avatar

Ville : Nogent le rotrou
Pays : France métropolitaine

Pardon, je me suis mal exprimé... Comment tu "tournes" les pages de résultats ?

et j'ai trouvé ça, ça affiche 100 résultats par page:

www.google.com/?num=100&?q=

voilàààà

The Antipop _ Radio/Video
Le (x)HTML pour les daltoniens !!
Image utilisateur

Vous les voyez, les pommes? Dommage, c'est joli...

 
Hors ligne S0pra # Posté le 06/09/2008 à 07:23:46
Avatar

Études : Polytech'Nice-Sophia Antipolis

Oui pour en avoir moins à tourner, j'utilises déjà cette méthode (100 par page).

Pour "tourner" les pages, tu utilises le paramètre start dasn l'URL : start=100 pour être à la page 2 par ex
 
Hors ligne Radioxid # Posté le 06/09/2008 à 09:37:05
about:black please!
Avatar

Ville : Nogent le rotrou
Pays : France métropolitaine

et tu l'incrémente dans un foreach ? Comment ?

The Antipop _ Radio/Video
Le (x)HTML pour les daltoniens !!
Image utilisateur

Vous les voyez, les pommes? Dommage, c'est joli...

 
Hors ligne rotoclap # Posté le 06/09/2008 à 12:12:10
Avatar
Groupe : Anciens

Ville : Aix-les-bains
Pays : France métropolitaine

Si vous restez sur du PHP, dites-le, qu'on puisse déplacer le sujet dans la bonne section.

Image utilisateurImage utilisateur
 
Hors ligne Radioxid # Posté le 06/09/2008 à 14:53:28
about:black please!
Avatar

Ville : Nogent le rotrou
Pays : France métropolitaine

on le dit...
On va continuer la dev en PHP ?

C'est partiiit !

The Antipop _ Radio/Video
Le (x)HTML pour les daltoniens !!
Image utilisateur

Vous les voyez, les pommes? Dommage, c'est joli...

 
Hors ligne S0pra # Posté le 07/09/2008 à 22:21:10
Avatar

Études : Polytech'Nice-Sophia Antipolis

Non je ne l'incrémentes pas dans un foreach.
J'utilises le while, qui parcourt les pages de 1 à 10 puisque Google se limite aux 1000 premiers résultats.

EDIT : J'ai commenté le code ici.

A+
Édité le 07/09/2008 à 22:26:53 par S0pra
 

Retour au forum "PHP" ou à la liste des forums

Pour accéder à cette section
Connectez-vous !
connexion_rpx