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