#!/bin/bash read REP; read tablo; #Création du fichier HTML avec titre et entête echo "Tableaux de liens" > $tablo; echo "


" >> $tablo; # Variable pour compter les fichiers d'URLS i=1; ######################################################## # POUR CHAQUE FICHIER D'URLs : # ######################################################## for fic in `ls $REP` do mkdir -p ./PAGES-ASPIREES/$i mkdir -p ./DUMP-TEXT/$i mkdir ./CONTEXTES/$i # Création du tableau, avec dimensions et titre echo "" >> $tablo; # Variable j pour compter les URLs j=1; #-----------------------------------------------------# # POUR CHAQUE LIGNE DU FICHIER TRAITE # #-----------------------------------------------------# for nom in `cat $REP/$fic` do echo "================================================================================" echo echo " TRAITEMENT DE L'URL $j DU FICHIER $i" echo # Aspiration de la page web curl $nom -o ./PAGES-ASPIREES/$i/$j.html # Variable contenant l'état de curl retourcurl=$?; # Détection des Bad Request controlducurl=$(egrep -io "Bad Request|Service Unavailable|s Interdit" ./PAGES-ASPIREES/$i/$j.html | sort -u); # Si présence d'un Bad Request, on l'inscrit comme valeur de retourcurl if [ "$controlducurl" != "" ] then retourcurl="$controlducurl"; fi echo echo "Retour curl : $retourcurl"; echo #-----------------------------------------------------# # SI L'ASPIRATION EST OK : #-----------------------------------------------------# if [ "$retourcurl" -eq 0 ] then # On détecte l'encodage avec file -i et on affiche le résultat dans le Terminal encodage=$(file -i ./PAGES-ASPIREES/$i/$j.html | cut -d= -f2); echo "----------------------------------------------------------------" echo "Encodage initial : $encodage"; #-----------------------------------------------------# # Si l'encodage est UTF-8 ou ASCII : on lynx et on dump #-----------------------------------------------------# if [ "$encodage" = "utf-8" ]; # Tout va bien, on peut extraire le texte avec Lynx then echo "Encodage connu -> lynx et dump en cours..."; echo "----------------------------------------------------------------" echo lynx -dump -nolist -display_charset=$encodage ./PAGES-ASPIREES/$i/$j.html > ./DUMP-TEXT/$i/$j-utf8.txt ; # Exécution du minigrep multilingue perl ./minigrepmultilingue-html/minigrepmultilingue.pl "UTF-8" ./DUMP-TEXT/$i/$j-utf8.txt ./minigrepmultilingue-html/motif-regexp.txt; # Déplacement du résultat de minigrep mv resultat-extraction.html ./CONTEXTES/$i/$j-motif.html # Recherche du contexte egrep -i "\bsuivant\b|\bfollowing\b" ./DUMP-TEXT/$i/$j-utf8.txt > ./CONTEXTES/$i/$j-motif.txt ; # Test egrep dans le Terminal nboccur=0 egrep -i "\bsuivant\b|\bfollowing\b" ./DUMP-TEXT/$i/$j-utf8.txt egrep -i "\bsuivant\b|\bfollowing\b" ./DUMP-TEXT/$i/$j-utf8.txt | wc -l # Capture du nombre d'occurrences dans la variable nboccur nboccur=$(egrep -i -o "\bsuivant\b|\bfollowing\b" ./DUMP-TEXT/$i/$j-utf8.txt | wc -l); # Affichage du nombre d'occurrences détectées dans le Terminal echo "Nombre d'occurrences : $nboccur" # On concatène les contextes dans un gros fichier cat ./CONTEXTES/$i/$j-motif.txt >> ./PROGRAMMES/fichierglobal.txt cat ./CONTEXTES/$i/$j-motif.html >> ./PROGRAMMES/fichierglobal.html echo "" >> $tablo; elif [ "$encodage" = "us-ascii" ]; then echo "Encodage connu -> lynx et dump en cours..."; echo "----------------------------------------------------------------" echo lynx -dump -nolist -display_charset=$encodage ./PAGES-ASPIREES/$i/$j.html > ./DUMP-TEXT/$i/$j.txt ; iconv -f $encodage -t utf-8 ./DUMP-TEXT/$i/$j.txt > ./DUMP-TEXT/$i/$j-utf8.txt ; # Exécution du minigrep multilingue perl ./minigrepmultilingue-html/minigrepmultilingue.pl "UTF-8" ./DUMP-TEXT/$i/$j-utf8.txt ./minigrepmultilingue-html/motif-regexp.txt; # Déplacement du résultat de minigrep mv resultat-extraction.html ./CONTEXTES/$i/$j-motif.html # Recherche du contexte egrep -i "\bsuivant\b|\bfollowing\b" ./DUMP-TEXT/$i/$j-utf8.txt > ./CONTEXTES/$i/$j-motif.txt ; egrep -i "\bsuivant\b|\bfollowing\b" ./DUMP-TEXT/$i/$j-utf8.txt > ./CONTEXTES/$i/$j-motif.html ; # Test egrep dans le Terminal nboccur=0 egrep -i "\bsuivant\b|\bfollowing\b" ./DUMP-TEXT/$i/$j-utf8.txt egrep -i "\bsuivant\b|\bfollowing\b" ./DUMP-TEXT/$i/$j-utf8.txt | wc -l # Capture du nombre d'occurrences dans la variable nboccur nboccur=$(egrep -i -o "\bsuivant\b|\bfollowing\b" ./DUMP-TEXT/$i/$j-utf8.txt | wc -l); # Affichage du nombre d'occurrences dans le Terminal echo "Nombre d'occurences : $nboccur" echo "" >> $tablo; #-----------------------------------------------------# # On cherche l'encodage directement dans le charset #-----------------------------------------------------# else if egrep -qi "(charset ?=.*?(\"|\')|encoding ?=.*?(\"|\'))" ./PAGES-ASPIREES/$i/$j.html ; # ON A PEUT-ÊTRE TROUVÉ UN ENCODAGE then # Alors on le signale dans le Terminal echo "----------------------------------------------------------------" echo "Presence d'un charset..." # On capture dans une variable la chaîne de caractères correspondant à l'encodage encodage=$(egrep -m 1 -o '(((utf|UTF)-(8|16|32))|(gb|GB)(k|K|2312|18030)|(iso|ISO|Iso)-8859-(\w)(\w)?|(WINDOWS|windows)-1252|(WINDOWS|windows)-1251|(WINDOWS|windows)-1256|((m|M)(a|A)(c|C)(R|r)(O|o)(M|m)(a|A)(n|N))|us-ascii)' ./PAGES-ASPIREES/$i/$j.html | sort -u) ; # On affiche dans le Terminal l'encodage trouvé echo "Charset extrait : $encodage "; echo "----------------------------------------------------------------" #-----------------------------------------------------# # On vérifie si le charset est connu par iconv #-----------------------------------------------------# VERIFENCODAGE=$(iconv -l | egrep -io $encodage | sort -u); #-----------------------------------------------------# # Si l'encodage est connu par iconv : #-----------------------------------------------------# if [ "$VERIFENCODAGE" != "" ]; then echo "Encodage connu par iconv -> lynx et dump en cours..." echo "----------------------------------------------------------------" # On lynx et on dump lynx -dump -nolist -display_charset=$encodage ./PAGES-ASPIREES/$i/$j.html > ./DUMP-TEXT/$i/$j.txt ; iconv -f $encodage -t utf-8 ./DUMP-TEXT/$i/$j.txt > ./DUMP-TEXT/$i/$j-utf8.txt ; # Exécution du minigrep multilingue perl ./minigrepmultilingue-html/minigrepmultilingue.pl "UTF-8" ./DUMP-TEXT/$i/$j-utf8.txt ./minigrepmultilingue-html/motif-regexp.txt; # Déplacement du résultat de minigrep mv resultat-extraction.html ./CONTEXTES/$i/$j-motif.html # Recherche du contexte egrep -i "\bsuivant\b|\bfollowing\b" ./DUMP-TEXT/$i/$j-utf8.txt > ./CONTEXTES/$i/$j-motif.txt ; egrep -i "\bsuivant\b|\bfollowing\b" ./DUMP-TEXT/$i/$j-utf8.txt > ./CONTEXTES/$i/$j-motif.html ; # Test egrep dans le Terminal nboccur=0 egrep -i "\bsuivant\b|\bfollowing\b" ./DUMP-TEXT/$i/$j-utf8.txt egrep -i "\bsuivant\b|\bfollowing\b" ./DUMP-TEXT/$i/$j-utf8.txt | wc -l # Capture du nombre d'occurrences dans la variable nboccur nboccur=$(egrep -i -o "\bsuivant\b|\bfollowing\b" ./DUMP-TEXT/$i/$j-utf8.txt | wc -l); # Affichage du nombre d'occurrences dans le Terminal echo "Nombre d'occurences : $nboccur" echo "" >> $tablo; #-----------------------------------------------------# # Si l'encodage est inconnu par iconv : #-----------------------------------------------------# else echo : "Encodage inconnu par iconv -> On ne fait rien" fi #-----------------------------------------------------# # Si on n'a pas trouvé de charset, on ne fait rien #-----------------------------------------------------# else echo "Pas de charset detecte dans les metadonnees de la page -> Pas de dump"; echo "" >> $tablo; fi fi #-----------------------------------------------------# # S'il y a un problème avec curl #-----------------------------------------------------# else echo "" >> $tablo; fi #-----------------------------------------------------# # INCRÉMENTATION DE j ET PASSAGE À L'URL SUIVANTE #-----------------------------------------------------# j=$((j+1)); done # Cellule contenant la concaténation des contextes echo "" >> $tablo; # Fermeture du tableau une fois la dernière URL du fichier traitée echo "
Tableau n° $i
N° URLURLPage aspiréeCode erreurDump texteDump texte UTF-8ContexteContextes HTMLNombre d'occurrences
$j$nom$j.html$retourcurl - $j-utf8.txt$j-motif.txt$j-motif.html$nboccur
$j$nom$j.html$retourcurl - $j-utf8.txt$j-motif.txt$j-motif.html$nboccur
$j$nom$j.html$retourcurl$j.txt
($encodage)
$j-utf8.txt$j-motif.txt$j-motif.html$nboccur
$j$nom$j.html$retourcurlEncodage
non détecté
Encodage
non détecté
Encodage
non détecté
Encodage
non détecté
Encodage
non détecté
$j$nom$j.html$retourcurlPage
non \"aspirée\"
Page
non \"aspirée\"
Page
non \"aspirée\"
Page
non \"aspirée\"
Page
non \"aspirée\"
Contexte globalContexte global HTML
" >> $tablo; ######################################################## # INCREMENTATION DE i ET PASSAGE AU SECOND TABLEAU # ######################################################## i=$((i+1)) # Fermeture de la boucle qui servait à créer les tableaux echo "


" >> $tablo; done # Fermeture des balises HTML echo "" >> $tablo; ######## FIN DU PROGRAMME ########