#!/bin/sh # # Script récupérant des infos sur le web à partir d'URLs renvoyées par # google faisant une recherche sur les mots-clef passés en paramètre. # # TODO : # option -n x : récupère les infos sur les x premières pages # pipe sur navigateur/affichage URL (konqueror, netscape, xterms avec lynx+urls) # Programmes et url de recherche # GREP="grep" LYNX="lynx" URLPART1="http://www.google.com/search?q=" URLPART2="&hl=fr&start=" URLPART3="&sa=N" #URLPART2="&btnG=Recherche+Google&hl=fr&meta=" # Variables d'affichage # NBURLS=3 NBLINES=20 # Modes possibles # FAUX=0 VRAI=1 HELP=0 PAGES=1 RESUME=2 URLS=3 PAGEN1=4 DEBUG=$FAUX # Initialisation et lecture des arguments # GREPSTRING="" SEARCHSTR="" MODE=$PAGES while [ "$1" != "" ]; do case $1 in "-d") DEBUG=$VRAI;; "-h") MODE=$HELP;; "-r") MODE=$RESUME;; "-u") MODE=$URLS;; "-1") MODE=$PAGEN1;; "-l") NBLINES=$2 shift;; "-n") NBURLS=$2 shift;; *) if [ "$SEARCHSTR" = "" ]; then SEARCHSTR="$1" GREPSTRING="$1" else SEARCHSTR="$SEARCHSTR+$1" GREPSTRING="$GREPSTRING\|$1" fi;; esac shift done # Finition de l'initialisation et affichage infos # if [ $MODE != $HELP ]; then echo "Recherche de : $SEARCHSTR" STARTURL=0 SEARCHURL="$URLPART1$SEARCHSTR$URLPART2$STARTURL$URLPART3" if [ $DEBUG = $VRAI ]; then echo "MODE = $MODE" echo "NBURLS = $NBURLS" echo "NBLINES = $NBLINES" echo "GREPSTRING = $GREPSTRING" fi fi # Action ! # if [ $MODE = $PAGES ]; then while [ $NBURLS -gt 0 ]; do if [ $NBURLS -gt 10 ]; then HEADURLS=10 else HEADURLS=$NBURLS fi for url in `$LYNX -source $SEARCHURL \ | $GREP '

]*\)>.*,\1,g' | head -n $HEADURLS`; do echo echo "===> URL : $url" echo if [ $NBLINES -gt 0 ]; then $LYNX -dump $url | $GREP -C -w -i "$GREPSTRING" | head -n $NBLINES else $LYNX -dump $url | $GREP -C -w -i "$GREPSTRING" fi echo done NBURLS=`expr $NBURLS - 10` STARTURL=`expr $STARTURL + 10` SEARCHURL="$URLPART1$SEARCHSTR$URLPART2$STARTURL$URLPART3" done elif [ $MODE = $RESUME ]; then while [ $NBURLS -gt 0 ]; do $LYNX -source $SEARCHURL \ | $GREP '

]*\)>.*
\(.*\),\1 :\ \2\ ,g' \ -e 's,<[^>]*>,,g' NBURLS=`expr $NBURLS - 10` STARTURL=`expr $STARTURL + 10` SEARCHURL="$URLPART1$SEARCHSTR$URLPART2$STARTURL$URLPART3" done elif [ $MODE = $URLS ]; then while [ $NBURLS -gt 0 ]; do if [ $NBURLS -gt 10 ]; then echo "URLs `expr $STARTURL + 1` à `expr $STARTURL + 10` :" HEADURLS=10 else echo "URLs `expr $STARTURL + 1` à `expr $STARTURL + $NBURLS` :" HEADURLS=$NBURLS fi $LYNX -source $SEARCHURL \ | $GREP '

]*\)>.*,\1,g' \ | head -n $HEADURLS NBURLS=`expr $NBURLS - 10` STARTURL=`expr $STARTURL + 10` SEARCHURL="$URLPART1$SEARCHSTR$URLPART2$STARTURL$URLPART3" done elif [ $MODE = $PAGEN1 ]; then url=`$LYNX -source $SEARCHURL \ | $GREP '

]*\)>.*,\1,g' \ | head -n 1` echo "Page trouvée : $url" echo if [ $NBLINES -gt 0 ]; then $LYNX -dump $url | head -n $NBLINES else $LYNX -dump $url fi elif [ $MODE = $HELP ]; then echo "wlookfor -- search Internet for keywords" echo echo "Options :" echo " -h : cette page d'aide" echo " -d : information de débogage" echo " -r : n'affiche que les urls avec leurs résumés" echo " -n x : récupère les infos sur les x premières pages" echo " -u : n'affiche que les urls" echo " -1 : n'affiche que le contenu de la première page trouvée" echo " -l x : affiche les x premières lignes des pages trouvées" echo echo "Les options -r -u et -1 sont mutuellement exclusives : seule la dernière" echo "sera prise en compte." echo echo "Sans aucune option, les pages trouvées seront utilisées pour faire une" echo "recherche des mots-clefs afin de n'afficher que les quelques lignes de" echo "contexte les concernant." echo "Par défaut le nombre d'urls est de 3, et le nombre de lignes totales" echo "affichées est de 20." fi