The Google command line


Find
This is a little bash script, distribued under GPL licence, that can launch google search in command line. Voici un petit script bash, fourni sous licence GPL, qui permet de faire des recherches google en ligne de commande.

Pour installer le script, lancer les commandes suivantes dans un shell :

yum / apt-get install lynx
wget www.tux-planet.fr/public/dev/shell/script-google
mv script-google google && chmod +x google

Pour fonctionner, il suffit de fournir le ou les mots recherchés en paramètre. Voici quelques exemples d'utilisation :

./google sebastien bilbeau

http://article.gmane.org/gmane.comp.horde.bugs/19897

http://blogperso.univ-rennes1.fr/sebastien.bilbeau/index.php/homebis

http://fedoraproject.org/people/

...

Ou encore :

./google sebastien bilbeau -blog
./google intitle:bilbobox
./google inurl:planet-libre

Si vous le souhaitez, vous pouvez télécharger les script ici. Bref, un truc de geek par forcément utile ...


16 Commentaires pour "The Google command line"

Flux des commentaires de cet article Ajouter un commentaire
  •  

    C'est un peu dommage d'avoir lynx en dépendance pour un script comme ça...
    en remplaçant
    lynx -dump $URL >> result1
    par
    wget -q -U="Mozilla/5.0" -O - $URL >> result1
    ligne 49, c'est plus cool

    RépondreRépondre
    teddyber , le 18 avril 2008 à 00:00
  •  

    @teddyber : ton idée est juste, mais les résultats semble différent avec wget. Les & sont transformés en "&" dans les urls et on voit apparaître certains caractères parasites, comme des quotes ...

    RépondreRépondre
    pti-seb , le 18 avril 2008 à 00:12
  •  

    Merci pour ce script ! Très utile ! Il ne reste plus qu'a mettre ça en place pour les différents moteurs de recherche !

    Quelques modifications que j'ai apporté :
    pour voir les opérateurs fonctionner correctement ( -terme ), j'ai du retirer les guillemets dans l'URL :
    #URL="$URL%22$searchTerm%22"
    URL="$URL$searchTerm"

    Ensuite, les recherches donnant du https peuvent fausser les résultats puisque l'URL apparait deux fois dans la page de google (au lieu d'avoir juste www, google nous renvoie https://www)

    # Extract only url
    sed 's/ http/\^http/g' result1 | tr -s "^" " " | grep http | sed 's/\ .*//g' > result2

    Et enfin pour avoir le nombre de résultats total :

    #Get the number of results
    total=`awk '/of about/{ print $8 }' result1`

    echo "$total pages in total"

    Voilà ! Je pense que je vais m'amuser un peu avec :)

    RépondreRépondre
    Chimrod , le 18 avril 2008 à 13:29
  •  

    Qu'est ce qu'on s'amuse avec Awk !
    Voila le code refait de manière complète au niveau de l'extraction ! Voici comment les résultats sont maintenant présentés :

    $ ~/google linux
    YouTube [14]Calendar [15]Photos [16]Documents [17]Reader :
    http://www.youtube.com/results?n...
    The Linux Home Page at Linux Online :
    en.wikipedia.org/wiki/Lin...
    Linux.com :: Feature :
    http://www.linux.com...
    Ubuntu Linux :
    http://www.ubuntu.com...

    Et voici le code correspondant :

    awk '

    #La page est décomposée en 2. Dans une première partie nous avons le texte, avec le n° du lien
    #correspondant. Et dans une seconde, l'index avec les liens effectif.
    #Le but sera de faire correspondre tout ça :-)

    #On récupère tous les indexes dans le fichier ( entre [] )
    #L'index du tableau contient le n° du lien, le champs #1 son nom
    #Le lien se présente de la manière suivante : [##] Texte du lien
    /^ +\[/ {
    lien[substr($1,match($1,/\[/)+1,2)]=substr($0,match($1,/\[/)+7,length($0))
    }

    #On regarde si le n° du lien correspond à celui déjà noté
    #Ici, c`est de la forme ##. url
    /. http/ && !/google/ && !/search\?q=cache/ {
    if ( substr($1,1,2) in lien )
    {
    #Si oui, on affiche le nom du lien, suivi du lien lui même
    print lien[substr($1,1,2)] " : \t" $2
    }
    }' result1

    Je pense qu'on peut encore améliorer le système, mais c'est déjà plus complet. ( Ma regex pour déterminer le nombre de page ne fonctionne plus si on change la langue de la recherche par exemple ). De même, il reste à faire partir le lien youtube ( qui est mis là automatiquement par google ).

    ps : je vois que mes tabulations sont parties en postant le code. J'espère que ça reste lisible pour autant..

    RépondreRépondre
    Chimrod , le 18 avril 2008 à 19:44
  •  

    @Chimrod : tes modifications sont intéressantes. J'ai intégré :

    - l'affichage du nombre de résultats
    - la gestion des urls https
    - la possibilité d'utiliser des opérateurs

    Pour la dernière modification, qui affiche les titres de pages et autres, je ne sais pas trop si cela à un intérêt. Je ne l'intègre donc pas, si des personnes souhaitent cette fonctionnalité, elles pourront ajouter ton code mit en commentaire.

    Au pire, tu peux faire un fork, vu que c'est du GPL ...

    RépondreRépondre
    pti-seb , le 19 avril 2008 à 14:38
  •  

    Pratique pour surveiller son référencement de façon automatique...

    Je vais voir si ya pas moyen de remplacer le script par un simple sed avec une regex kivabien. (Oui, j'aime sed)

    RépondreRépondre
    divarvel , le 19 avril 2008 à 15:07
  •  

    J'avais mis ça dans le but de faire des recherches sur les résultats ( par exemple faire un appel récursif au script avec à chaque fois un terme retiré, c'est pour ça que j'avais cherché à coordoner la description du lien, et le lien lui même ). Je m'inspire des billets disponibles ici : aixtal.blogspot.com/ ( dont les recherches sont surtout basées sur Wikio )

    Sinon sous debian le paquet libwww-search-perl contient le programme WebSearch, permettant d'interroger de nombreux moteurs, sauf que pour google, il faut la clef autorisant les recherches automatiques...

    RépondreRépondre
    Chimrod , le 19 avril 2008 à 16:21
  •  

    @divarvel : le script utilise déjà sed ...

    @Chimrod : ouai google aime pas trop que l'on fasse des recherches en dehors de ces pages Internet. Par exemple, si tu fait un wget sans indiquer le referer, tu te prend une jolie erreur.

    Il y a a mon avis deux cause :
    - une question d'argent, car sur le site google il ya des la pub
    - peut-être pour bloquer les robots spammeurs, qui passe leur temps à scruter les résultats google de façon automatique.

    Néanmoins, le script fonctionne.
    Bash c'est plus fort que toi.

    RépondreRépondre
    pti-seb , le 19 avril 2008 à 19:41
  •  

    Je voulais dire que je vois pas l'intérêt de passer par un navigateur, puisqu'on peut avoir directement le contenu avec wget non ? (J'ai pas pris le temps de tout éplucher, je fais peut être fausse route)

    Ce que je voulais dire c'est qu'il y a peut être moyen de faire tenir ça en 2 commandes, un wget et un sed sur le résultat. J'ai pas encore eu l'occasion de faire des regex très poussées avec sed, ya moyen de faire des assertions et tout ?

    RépondreRépondre
    divarvel , le 19 avril 2008 à 23:10
  •  

    @divarvel : il est sûrement possible de réduire le code. Si jamais tu arrive à faire un truc bien, tiens nous au courant.

    RépondreRépondre
    pti-seb , le 20 avril 2008 à 13:04
  •  

    Very nice little tool. Just thought about why no one made a CL google tool before.
    Would it be possible to have the results dumped in a html file that stores your searches?
    ie.
    Search 1: sebastien bilbeau
    10,900 pages in total
    1...
    2...
    3...etc
    Search 2: Command Line Google
    727,000 pages in total
    1...
    2...
    3...etc

    RépondreRépondre
    jpe , le 21 avril 2008 à 20:23
  •  

    @jpe : juste add this line in the script to have the results dumped in a html file :

    # Print final result and clean
    cat result3 | sort -u | awk '{print "<br/><a href=" $1 ">" $1 "</a>"}' > ~/result.html

    RépondreRépondre
    pti-seb , le 23 avril 2008 à 13:19
  •  

    Hello,
    I came across this script while browsing FSdaily.com and I really liked this idea. I have started to use this quite a bit and began making improvements for me. I thought I would share the improvements I made.

    1) Instead of writing to result[1-3] where ever the script is launched, I added ~/tmp/ so that the file was written to the users tmp directory. Since I often write out information as result, I feel that this is better as there is no worry about me over writing my own result file.

    2) I use the calculator function and the conversion function that Google offers. I use it a lot. So I added this code in:
    calc=`sed -n '/More about calculator/{g;1!p;};h' /tmp/result1`
    if [ "$calc" ]
    then
    echo "Calculator Results"
    echo $calc
    echo "---------------------"
    fi

    rates=`sed -n '/Rates provided for information only/{g;1!p;};h' /tmp/result1`
    if [ "$rates" ]
    then
    echo "Google Rates"
    echo $rates
    echo "---------------------"
    fi

    You can try it out with searches like:
    ./google 5 US dollars to British pound
    ./google what is 3 plus 4
    ./google 34 degrees Fahrenheit
    ./google 34 degrees Fahrenheit Kelvin

    Just thought I would share my changes!
    Thanks for this tool!

    RépondreRépondre
    ~Stack~ , le 23 mai 2008 à 20:41
  •  

    Bonjour je voudrais savoir comment modifier le script pour rechercher sur http://www.scroogle.org/cgi-bin/scraper.htm

    RépondreRépondre
    n3o , le 31 octobre 2009 à 17:28
  •  

    up !! :)

    RépondreRépondre
    n3o , le 20 novembre 2009 à 05:55
 

Ajouter un commentaire

actualité android apache apple astuce astuces bash bilboblog blog boot chrome clavier commande commandes conky date debian Desktop développement elementary exploit faille fedora firefox flash gimp gnome google graphique Graphisme hack hacking Hardware humour intel internet iphone jailbreak Jeux Kde kernel libre Linux log logiciels Logiciels Libres lucid lynx maemo mail maquette metasploit microsoft mobile mockup monitoring mozilla multi-touch musique mysql n900 nautilus nokia noyau openoffice open source password photos php Planet publicité redhat red hat rpm réseau screenshot script serveur serveurs shell sql ssh statistiques sysadmin system Sécurité thème tux-planet tv twitter ubuntu unity vidéo vidéos vlc voyage wallpaper windows wordpress yum