Bonjour,
Je suis en train d'essayer d'écrire un projet permettant de faire de la veille de page web.
Pour cela je récupère le source de chaque page web à vérifier toutes les x minutes(l'ensemble des url à vérifier se trouvant dans un fichier xml). A chaque intervalle de temps je vérifie si le source a été modifié pour une même page, si c'est le cas je fais une action pour prévenir l'utilisateur.
Le code en lui-même fonctionne mais je n'emploie pas la bonne méthode....par exemple si je fait un test sur google.fr le source de la page web n'est jamais le même (pourtant visuellement c'est bien le cas)... certains éléments changent. C'est facile a vérifier il suffit d'afficher le source de la page google.fr, de faire un refresh et de réafficher le source... le contenu n'est pas le même !
Du coup je ne sais plus trop comment m'y prendre pour développer une application qui me permettrait de faire ce genre de chose car à part récupérer le source je ne vois, pourtant ce genre d'outils existe déjà donc ça doit être possible... a moins que je puisse faire quelque chose à l'aide de System.Windows.Forms.WebBrowser... je ne sais pas trop, si quelqu'un aurait une idée je suis preneur...
Même si le problème ne vient pas du code ou en tout cas pas uniquement de là (dans tout les cas ca ne peut fonctionner a cause du problème ci-dessus) je vous donne quand même le code, si ca peut vous inspirer... la méthode CheckWebPages() est appelé toutes les x minutes. Les pages à vérifier sont contenues dans WebWatch.xml. Si la page n'a pas encore été vérifié (non présente dans lstUrl) ou que les données sont différentes d'une version précédemment mémorisée de cette même page alors cette nouvelle page (avec sont nouveau contenu) est ajouté à lstUrl (en l'occurence c'est toujours le cas puisque la source de google.fr est toujours différente après un refresh !)
WebWatch.xml :
CheckWebPages() :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <?xml version="1.0" encoding="utf-8"?> <webPageToWatch> <webPage name="google"> <url>http://www.google.fr/</url> </webPage> <webPage name="bing"> <url>http://www.bing.com/</url> </webPage> <webPageToWatch>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 private const string xmlPath = "WebWatch.xml"; private const string archivePath = ""; private const string proxyAddress = "http://000.000.000.000:1111"; private List<UrlToCheck> lstUrl = new List<UrlToCheck>(); Timer clock; private void CheckWebPages() { HttpWebResponse response; WebRequest request; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(xmlPath); Stream dateStream; StreamReader reader; UrlToCheck wp; string responseFromServer; foreach (XmlNode n in xmlDoc.ChildNodes[1].ChildNodes) { wp = new UrlToCheck(); wp.Url = n.ChildNodes[0].FirstChild.Value; wp.Name = n.Attributes[0].Value; wp.FileName = wp.Name + DateTime.Now.ToString("yyyyMMddhhmmss") + ".html"; request = WebRequest.Create(wp.Url); request.Proxy = new WebProxy(proxyAddress); response = (HttpWebResponse)request.GetResponse(); dateStream = response.GetResponseStream(); reader = new StreamReader(dateStream); responseFromServer = reader.ReadToEnd(); wp.Data = responseFromServer; UrlToCheck result = lstUrl.Find(delegate(UrlToCheck ur) { return ur.Name == wp.Name; }); if ((result == null) || (result!=null && (result.Data != wp.Data))) { lstUrl.Add(wp); } } }
Partager