Gå til innhold

Anbefalte innlegg

Heisann. Jeg sliter med å finne en kode som sjekker om noe innhold på en nettside endrer seg.

Ta for eksempel:

 

www.hardware.no

 

Det jeg da ønsker er å lage en "IF" kommando som ser etter endringer i hele siden..

Her ser dere et slags eksempel.

 

På en måte slik at programmet leter etter endringer i siden, alt fra klokkeslett, eller når en ny artikkel kommer opp.. Alle endringer på siden liksom.

 

If (wb.document.body.innerhtml."ENDRERINNHOLD")

{

messagebox.show

}

Lenke til kommentar
Videoannonse
Annonse

Du må enten sjekke innholdet tegn for tegn, eller få tak i siste endringen på en eller annen måte. Hvis du ikke har kontroll på serveren må du nesten sjekke om innholdet har endret seg siden sist. Enkleste er å danne en hash av innholdet og sjekke det mot en tidligere hash.

Lenke til kommentar

Et enkelt forslag som trenger en del forbedringer hvis det skal bli noe, men det illustrerer ideen til svaret du fikk først.

 

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Web;
using System.Net;
using System.Security.Cryptography;

namespace CheckChanges
{
   public partial class Form1 : Form
   {
       public WebClient WebKlient = new WebClient();
       public string url;
       public byte[] sisteSjekk = new byte[16];
       public byte[] sisteData;
       public bool sjekker;

       public Form1()
       {
           InitializeComponent();
       }

       private void button1_Click(object sender, EventArgs e)
       {
           if (sjekker)
           {
               timer1.Stop();
               button1.Text = "Start";
           }

           if (!sjekker)
           {
               url = textBox1.Text;
               sisteData = WebKlient.DownloadData(url);
               sisteSjekk = MD5.Create().ComputeHash(sisteData);
               timer1.Interval = 10000;
               timer1.Tick += new EventHandler(Sjekk);
               timer1.Start();
               button1.Text = "Stopp";
               listBox1.Items.Add("Sjekker " + url + " hvert " + timer1.Interval / 1000 + " sekund");
               sjekker = true;
           }
       }



       private void Sjekk(object sender, EventArgs e)
       {
           byte[] nyData;
           byte[] nyHash = new byte[16];
           nyData = WebKlient.DownloadData(url);
           nyHash = MD5.Create().ComputeHash(nyData);
           listBox1.Items.Add("Sjekker " + url);
           if (SjekkHasher(nyHash))
           {
               listBox1.Items.Add(DateTime.Now.ToString() + "@" + url + " er forandret.");
           }
           else
           {
               listBox1.Items.Add("Same old.");
           }

           sisteSjekk = nyHash;
       }

       private bool SjekkHasher(byte[] ny)
       {
           int i;
           for (i = 0; i < 16; i++)
           {
               if (ny[i] != sisteSjekk[i]) 
                   return true;
           }
           return false;

       }
   }
}

Endret av Techster
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...