#!/bin/bash
# on récupère les 4 arguments que l'on a passé au programme
# le premier : le fichier d'URL
# le second : chemin vers le dossier devant contenir le fichier HTML final
fichier=$1;
languetableau=$3;
motif=$4;
echo "Le fichier des URLs traité est : $1" ;
echo "On créé le tableau HTML dans : $2" ;
# on commence par supprimer l'éventuel fichier de résultat que l'on doit reconstruire
rm -f "$2/tableau-$languetableau.html" ;
echo "
" >> "$2/tableau-$languetableau.html" ;
echo "N° | URL | Code http | encodage | Page aspirée | Dump-brut | Dump-UTF8 | Filtrage Txt | Filtrage Html | Index | Bitexte | Fq Motif |
" >> "$2/tableau-$languetableau.html" ;
#----------------------------------------------------------------
# "parcours" d'un fichier d'URL : lecture ligne à ligne des URLs
for ligne in $(cat "$fichier")
do
compteur3=$(printf "%03d" $compteur);
echo "----------------------------------------------";
echo "Traitement de l'URL : $ligne";
echo "----------------------------------------------";
#-----------------------------------------------------------
# 1. on teste la connexion vers l'URL : récupération de http_code via curl
#-----------------------------------------------------------
coderetourhttp=$(curl -k -SIL -o tmp.txt -w %{http_code} $ligne --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36");
echo "CODE HTTP : $coderetourhttp";
# si coderetourhttp est egale à 200
if [[ $coderetourhttp == 200 ]]
then
#-----------------------------------------------------------
# 2. on essaie de récupérer l'encodage de la page associée à l'URL
# REMARQUE : la commande suivante est lancée que si http_code=200
#-----------------------------------------------------------
encodage=$(curl -k $ligne --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36"|egrep -io "content=.*?charset=\"?[^\"]+\""|cut -f3 -d"="|tr '[a-z]' '[A-Z]'|sed 's/"//g');
echo "ENCODAGE DETECTE PAR CURL : $encodage";
#-----------------------------------------------------------
# 3. on récupère la page localement et on la range dans le bon dossier
#-----------------------------------------------------------
curl -L -o "./PAGES-ASPIREES/$languetableau-$compteur.html" "$ligne" --user-agent "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36";
#-----------------------------------------------------------
if [[ $encodage == "UTF-8" ]]
then
#-----------------------------------------------------------
# On remplit le tableau : 1 ligne par URL et autant de colonnes que de traitement réalisés
# Pour le dump via LYNX on travaille sur la page aspirée
#-----------------------------------------------------------
# 1. On lynx la page aspirée
lynx -dump -nolist -assume_charset=$encodage -display_charset=$encodage "./PAGES-ASPIREES/$languetableau-$compteur.html" > ./DUMP-TEXT/aseg.txt;
#Segmentation
python3 ./PROGRAMMES/seg.py;
cat ./DUMP-TEXT/dseg.txt | tr -d '[:alnum:]' > ./DUMP-TEXT/P-$languetableau-$compteur.txt;
#-----------------------------------------------------------
# 2. On cree le fichier contexte TXT via egrep
egrep -i -C2 "$motif" ./DUMP-TEXT/P-$languetableau-$compteur.txt > ./CONTEXTES/P-$languetableau-$compteur.txt;
mv ./CONTEXTES/P-$languetableau-$compteur.txt ./CONTEXTES/P-$languetableau-$compteur3.txt;
#-----------------------------------------------------------
# 3. Fq motif
nbmotif=$(egrep -coi "$motif" ./DUMP-TEXT/P-$languetableau-$compteur.txt;);
#-----------------------------------------------------------
# 4. contexte html
perl ./minigrep/minigrepmultilingue.pl "utf-8" ./DUMP-TEXT/P-$languetableau-$compteur.txt ./minigrep/parametre-motif_chinois.txt ;
mv resultat-extraction.html ./CONTEXTES/$languetableau-$compteur.html ;
#-----------------------------------------------------------
# 5. index hierarchique
egrep -o "\w+" ./DUMP-TEXT/P-$languetableau-$compteur.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/index-$languetableau-$compteur.txt ;
#-----------------------------------------------------------
# 6. bigramme
egrep -o "\w+" ./DUMP-TEXT/P-$languetableau-$compteur.txt > bi1.txt;
tail -n +2 bi1.txt > bi2.txt ;
paste bi1.txt bi2.txt > bi3.txt ;
cat bi3.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/bigramme-$languetableau-$compteur.txt ;
#-----------------------------------------------------------
# 7. on écrit les résultats dans le tableau avec tous les résultats produits
echo "
$compteur |
$ligne |
$coderetourhttp |
$encodage |
$languetableau-$compteur3.html |
- |
P-$languetableau-$compteur3.txt |
P-$languetableau-$compteur3.txt |
$languetableau-$compteur3.html |
index-$languetableau-$compteur3 |
bigramme-$languetableau-$compteur3 |
$nbmotif |
" >> "$2/tableau-$languetableau.html";
#-----------------------------------------------------------
else
if [[ $encodage != "" ]]
then
reponse=$(iconv -l | egrep "$encodage") ;
if [[ $reponse != "" ]]
then
curl -sL -o "./PAGES-ASPIREES/$languetableau-$compteur.html" "$ligne" ;
# dump de l'URL
lynx -dump -nolist -assume-charset=$encodage -display-charset=$encodage "./PAGES-ASPIREES/$languetableau-$compteur.html" > ./DUMP-TEXT/$languetableau-$compteur.txt;
iconv -f $encodage -c -t utf-8 ./DUMP-TEXT/$languetableau-$compteur.txt > ./DUMP-TEXT/aseg.txt;
python3 ./PROGRAMMES/seg.py;
cat ./DUMP-TEXT/dseg.txt | tr -d '[:alnum:]' > ./DUMP-TEXT/P-$languetableau-$compteur.txt;
egrep -i -C2 "$motif" ./DUMP-TEXT/P-$languetableau-$compteur.txt > ./CONTEXTES/P-$languetableau-$compteur.txt;
mv ./CONTEXTES/P-$languetableau-$compteur.txt ./CONTEXTES/P-$languetableau-$compteur3.txt;
#-----------------------------------------------------------
# 3. Fq motif
nbmotif=$(egrep -coi "$motif" ./DUMP-TEXT/P-$languetableau-$compteur.txt;);
#-----------------------------------------------------------
# 4. contexte html
perl ./minigrep/minigrepmultilingue.pl "utf-8" ./DUMP-TEXT/P-$languetableau-$compteur.txt ./minigrep/parametre-motif.txt ;
mv resultat-extraction.html ./CONTEXTES/$languetableau-$compteur.html ;
#-----------------------------------------------------------
# 5. index hierarchique
egrep -o "\w+" ./DUMP-TEXT/P-$languetableau-$compteur.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/index-$languetableau-$compteur.txt ;
#-----------------------------------------------------------
# 6. bigramme
egrep -o "\w+" ./DUMP-TEXT/P-$languetableau-$compteur.txt > bi1.txt;
tail -n +2 bi1.txt > bi2.txt ;
paste bi1.txt bi2.txt > bi3.txt ;
cat bi3.txt | sort | uniq -c | sort -r > ./DUMP-TEXT/bigramme-$languetableau-$compteur.txt ;
#-----------------------------------------------------------
# 7. on écrit les résultats dans le tableau avec tous les résultats produits
echo "
$compteur |
$ligne |
$coderetourhttp |
$encodage |
$languetableau-$compteur3.html |
$languetableau-$compteur3.txt |
P-$languetableau-$compteur3.txt |
P-$languetableau-$compteur3.txt |
$languetableau-$compteur3.html |
index-$languetableau-$compteur3 |
bigramme-$languetableau-$compteur3 |
$nbmotif |
" >> "$2/tableau-$languetableau.html";
else
#-----------------------------------------------------------
# Ici on a un URL pas OK (code http différent de 200,
# Cette URL ne sera pas traitée
# on la laisse dans le tableau avec des colonnes vides !!!!
#-----------------------------------------------------------
echo "$compteur | $ligne | $coderetourhttp | - | - | - | - | - | - | - | - | - |
" >> "$2/tableau-$languetableau.html";
fi
else
echo "$compteur | $ligne | $coderetourhttp | - | - | - | - | - | - | - | - | - |
" >> "$2/tableau-$languetableau.html";
fi
fi
else
#-----------------------------------------------------------
# Ici on a un URL pas OK (code http différent de 200,
# Cette URL ne sera pas traitée
# on la laisse dans le tableau avec des colonnes vides !!!!
#-----------------------------------------------------------
echo "$compteur | $ligne | $coderetourhttp | - | - | - | - | - | - | - | - | - |
" >> "$2/tableau-$languetableau.html";
fi
# on incrémente le compteur des URLs
compteur=$((compteur+1)) ;
done
#----------------------------------------------------------------
fi
echo "