Vous pouvez comparer le code source de la page à chaque itération.
Cependant, et même si aucun nouveau contenu (texte, image, article, etc) est ajouté à la page, bon nombre de sites incluent dans leur code source des éléments dynamiques qui changent en permanence.
Donc pour bien faire il faut identifier la partie de la page qui vous intéresse pour exclure tout le superflu et ainsi comparer que le strict nécessaire.
Par exemple, sur la page d'accueil de 1FORMATIK.com, la liste des questions se trouve dans une balise <div class="qa-main">
.
On peut ainsi récupérer tout le contenu de cette balise.
Voici l'exemple correspondant :
# Durée d'exécution du script en minute
$duree_en_minute = 720
# Occurrence de rafraichissement en seconde
$refresh_en_seconde = 10
# Quel navigateur internet utilisez-vous (Google Chrome, Firefox, Opera ...)
$navigateur = "Google Chrome"
# Adresse de la page web
$adresse = "https://www.1formatik.com"
# On recupere le code source contenu dans la balise div dont la class est qa-main et on le stock dans une variable nommée html1
$scrap = Invoke-WebRequest -Uri $adresse
$html1 = $scrap.content| Where-Object {$_.class -eq "qa-main"}
$timeout = new-timespan -Minutes $duree_en_minute
$sw = [diagnostics.stopwatch]::StartNew()
while ($sw.elapsed -lt $timeout){
# à chaque itération on récupère de nouveau le code source et le stock dans une seconde variable html2
$scrap = Invoke-WebRequest -Uri $adresse
$html2 = $scrap.content| Where-Object {$_.class -eq "qa-main"}
# On compare les deux variables
if ($html1 -eq $html2) {
$message = "Code source identique"
}
else {
$message = "Code source different"
# On met à jour la variable html1 avec le nouveau code source
$html1 = $html2
}
# On refresh la page dans la navigateur
[void] [System.Reflection.Assembly]::LoadWithPartialName("'Microsoft.VisualBasic")
[Microsoft.VisualBasic.Interaction]::AppActivate($navigateur)
[void] [System.Reflection.Assembly]::LoadWithPartialName("'System.Windows.Forms")
[System.Windows.Forms.SendKeys]::SendWait("{F5}")
$start = Get-Date
Write-Host "Refresh de la page :"$start $message
start-sleep -seconds $refresh_en_seconde
}
Référez vous à cette page pour plus d'informations.