Projet de suivi à son site Internet.
Suivre l’accès aux différentes pages de son site
hébergé par LWS.
Objectif : suivre le nombre d’accès (hits) aux différents documents déposés sur un site Internet du fournisseur LWS.
Utilisation des informations disponibles dans « Performances » rubrique « Stat du site »
Ce projet est réalisé sous Windows 10, à l’aide de macros de MS Word , MS Excel et d’un programme Python.
Partie 1.
Accès aux infos sur les différentes pages de type « html »
Phase 1 (manuelle)
Dans Stat du site
Aller sur la rubrique « pages vues » liste complète concernant l’accès aux documents html du site.
Sauvegarder le contenu de la page (enregistrer cadre)
Un fichier html est enregistré (c’est un tableau, précédé et suivi de textes)
Phase 2 (word) manuelle
Ouvrir le fichier html avec Word
Supprimer les lignes hors du tableau (avant et après) y compris l’en-tête du tableau et ligne nom des colonnes.
S’assurer qu’aucune ligne vide n’existe.
La première ligne du tableau ne contient que « / » compléter par « 000.html »
Sauvegarder puis Quitter Word
Phase 3 (word) auto
Ouvrir le fichier par Word
Exécuter la macro Mac_Clean celle-ci réalise les opérations suivantes
Supprime les colonnes 6, 5, 4 et 3 sans intérêt
Il ne reste que 2 colonnes chaque ligne contient le nom du lien et le nombre d’accès à ce dernier depuis le début du mois.
Remplace la chaine « .html » par « .html ; » un espace après html et le ;
Enregistre ce fichier en « Stat_in_lws_htm.txt »
Fermer Word
Ci-dessous la source de la macro Word.
Sub Mac_Clean()
'
' Mac_Clean Macro
' appartient au projet Suivi accès LWS (partie liens html)
'Supprime les colonnes inutiles et prépare la fusion des 2 colonnes
' Réalisation F5BQV Pierre Schuster
Selection.Tables(1).Columns(6).Delete
Selection.Tables(1).Columns(5).Delete
Selection.Tables(1).Columns(4).Delete
Selection.Tables(1).Columns(3).Delete
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = ".html"
.Replacement.Text = ".html ;"
.Forward = False
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
ActiveDocument.SaveAs2 FileName:="Stat_in_lws_htm.txt", FileFormat:= _
wdFormatText, LockComments:=False, Password:="", AddToRecentFiles:=True, _
WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
False, Encoding:=1252, InsertLineBreaks:=False, AllowSubstitutions:=False _
, LineEnding:=wdCRLF, CompatibilityMode:=0
End Sub
Partie 2.
Accès aux infos sur les différentes pages de type « pdf , mp3 et mp4 »
Phase 1 (manuelle)
Dans Stat du site
Aller sur la rubrique «Téléchargements » liste complète concernant l’accès aux documents pdf mp3 mp4 et txt du site.
Sauvegarder le contenu de la page (enregistrer cadre)
Un fichier html est enregistré (c’est un tableau, précédé de textes)
Phase 2 (word) manuelle
Ouvrir le fichier .htm avec Word.
Supprimer les lignes hors du tableau (avant et après) y compris l’en-tête du tableau et ligne nom des colonnes.
S’assurer qu’aucune ligne vide n’existe.
Sauvegarder Quitter Word
Phase 3 (word) auto
Ouvrir le fichier « .htm » par Word
Exécuter la macro Mac_Clean pdf celle-ci réalise les opérations suivantes
Supprime les colonnes 6 ,5,4,1 sans intérêt ne conserve que le nom du fichier et le nombre de hits.
Il ne reste que 2 colonnes, chaque ligne contient le nom du lien et le nombre d’accès à ce dernier depuis le début du mois.
Remplace la chaine « .pdf » par « .pdf ; » un espace après pdf et le ;
Remplace la chaine « .mp3 » par « .mp3 ; » un espace après mp3 et le ;
Remplace la chaine « .mp4 » par « .mp4 ; » un espace après mp4 et le ;
Enregistre ce fichier en « Stat-in-pdf-lws.txt »
Fermer Word
Ci-dessous la source de la macro Word.
Sub Macro_lws_pdf()
'
' Macro_lws_pdf Macro (seconde partie du projet)
' appartient au projet Suivi accès LWS (partie liens pdf et mp3 mp4)
' Supprime les colonnes inutiles et prépare la fusion des 2 colonnes
' Réalisation F5BQV Pierre Schuster
Selection.Tables(1).Columns(6).Delete
Selection.Tables(1).Columns(5).Delete
Selection.Tables(1).Columns(4).Delete
Selection.Tables(1).Columns(1).Delete
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = ".pdf "
.Replacement.Text = ".pdf ; "
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = ".pdf"
.Replacement.Text = ".pdf ;"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute
With Selection
If .Find.Forward = True Then
.Collapse Direction:=wdCollapseStart
Else
.Collapse Direction:=wdCollapseEnd
End If
.Find.Execute Replace:=wdReplaceOne
If .Find.Forward = True Then
.Collapse Direction:=wdCollapseEnd
Else
.Collapse Direction:=wdCollapseStart
End If
.Find.Execute
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = ".mp3"
.Replacement.Text = ".mp3 ;"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
With Selection.Find
.Text = ".mp4"
.Replacement.Text = ".mp4 ;"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
ActiveDocument.SaveAs2 FileName:="Stat_in_lws_pdf.txt", FileFormat:= _
wdFormatText, LockComments:=False, Password:="", AddToRecentFiles:=True, _
WritePassword:="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
False, Encoding:=1252, InsertLineBreaks:=False, AllowSubstitutions:=False _
, LineEnding:=wdCRLF, CompatibilityMode:=0
End Sub
Partie 3.
Un programme python
Ce programme lit les deux fichiers « Stat-in-htm-lws.txt» et « Stat-in-pdf-lws.txt » obtenus précédemment.
Suppression des lignes inutiles (celles qui ne contiennent pas «.html ; » ou «. pdf ; » ou «.mp3 ; » ou «.mp4 ; » effectue le regroupement des 2 zones sur une même ligne, en conservant le « ; » entre les 2 champs.
Sauvegarde auto en « Stat-out-lws.txt » ce sont les lignes qui doivent entrer dans le tableau Excel.
Des lignes vides arrivent à être générées pourquoi ?
Avant de lancer le programme, supprimer ces lignes manuellement.
Ci-dessous la source du programme python
#coding: utf8
# Fichier "acces aux page LWS comme 2 input files (après mise en forme)
# issu de tableaux 2 colonnes"
# ligne 1 nom du fichier
# ligne 2 nombre d'accès
# enregistrements séparés en 2 champs par ";"
# concaténation des 2 champs séparés par un point virgule (pour Excel)
# Réalisation F5BQV Pierre Schuster
inputH = open("c:/Users/Pierre/Documents/Stat_in_lws_htm.txt", "r")
inputP = open("c:/Users/Pierre/Documents/Stat_in_lws_pdf.txt","r")
output = open("c:/Users/Pierre/Documents/Stat_out_lws.txt", "w")
# Ecrire une ligne pour chaque ligne lue dans les fichiers in
# lecture fichiers dans la boucle
for lines in inputH: # debut boucle lecture
if "/" in lines: # identifier ligne part01
Part01 = lines.rstrip('\n') # suppression fin ligne
Linet1 = Part01
elif not "/" in lines: # traitement partie 2
Part02 = lines
Linet2 = Part02
Linet =(Linet1+Linet2 +'\n') #ajout new ligne cause concaténation
print (Linet)
if ".html ;" in Linet :
output.writelines(Linet) # ecrire chaque ligne non vide
for lines in inputP: # debut boucle lecture
if "/" in lines: # identifier ligne part01
Part01 = lines.rstrip('\n') # suppression fin ligne
Linet1 = Part01
elif not "/" in lines: # traitement partie 2
Part02 = lines
Linet2 = Part02
Linet =(Linet1+Linet2 + '\n')
print (Linet)
if ".mp3 ;" in Linet :
output.writelines(Linet) # ecrire chaque ligne
if ".mp4 ;" in Linet :
output.writelines(Linet) # ecrire chaque ligne
if ".pdf ;" in Linet :
output.writelines(Linet) # ecrire chaque ligne
inputP.close()
inputH.close()
output.close()
Partie 4.
Excel
Objectif obtenir un tableau
Lancer Excel
La macro « MacroLWS » peut être lancée par ctrl/k
Importe le fichier .txt , le séparateur est le « ; » , (pas de délimiteur de texte) génération de 2 colonnes sur la feuille.
Trie sur les 2 colonnes (nom du lien en majeur)
On obtient un tableau sur 2 colonnes indiquant sur chaque ligne le nombre de consultations de la page référencée.
Sauvegarde du tableau , au MsgBox fournir la date, celle-ci est incorporée au nom du fichier xlxs)
Ce tableau peut être comparé à ceux des jours précédents ou archivé.
Ci-dessous la source de la macro Excel MacroLWS .
Sub MacroLWS()
'
' Macro pour mettre en forme et trier les accès au site perso
' Raccourci possible par Ctrl/k
‘ Réalisation par F5BQV Pierre Schuster
Dim Lastligne As String
Dim Ldate As String
Dim sFilenamet As Variant ' Fichier cible avec chemin
Workbooks.Add 'Création nouveau classeur
ActiveCell.FormulaR1C1 = " "
Ldate = InputBox("Date du fichier à traiter sous la forme aaaa-mm-jj")
sFilenamet = ("C:\Users\pierre\Documents\Lws_access_" & Ldate & ".xlsx")
Application.CutCopyMode = False
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\Users\pierre\Documents\Stat-out-lws.txt", Destination:=Range("$A$1") _
)
.Name = "Stat-out-lws"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 850
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Lastligne = ActiveSheet.UsedRange.Rows.Count ' Dernière ligne de la feuille
' MsgBox "derniere ligne" & Lastligne ‘pour test
Columns("A:B").Select
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add2 Key:=Range("A1:A" & Lastligne) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Feuil1").Sort
.SetRange Range("A1:B" & Lastligne)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Application.DisplayAlerts = False 'pour permettre le remplacement des fichiers sans message
ActiveWorkbook.SaveAs Filename:=sFilenamet, _
FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
MsgBox "le fichier est dispo dans " & sFilenamet & " OK pour terminer"
ActiveWindow.Close
Workbooks.Close
End Sub
Pierre Schuster
le
06/06/2024
Choix d’un autre
sujet https://f5bqv.fr.Inv
Ou retour à l’accueil du site https://f5bqv.fr