Sto usando Html Agility Pack per vedere se esistono div con una classe e un ID specifici.
string target = "http://192.168.3.230/index.htm";
WebClient client = new WebClient();
string html = client.DownloadString(target);
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(html);
if (doc.DocumentNode.SelectSingleNode("//div[@id='bit0' and @class='rledoff']") != null){
//actions in here
}
else if (doc.DocumentNode.SelectSingleNode("//div[@id='bit0' and @class='rledon']") != null)
{
//actions in here
}
Attualmente il else if dovrebbe essere vero, ma sta facendo le azioni nella dichiarazione if. Ho visto questo lavoro correttamente quando l'ho fatto
doc.Load("c:\\somelocaldest\\page.htm");
Quando provo a farlo dal sito reale invece di un file salvato localmente del sito, vedremo che l'id è corretto e ignorare la classe. Cosa potrebbe causare un comportamento diverso tra ottenere l'html per un file locale e da un sito / dispositivo esterno?
Prima di tutto ti suggerisco di farlo, per me ha funzionato più velocemente di WebClient.
HtmlWeb web = new HtmlWeb();
HtmlDocument doc = web.Load(target);
Se dici che questo funziona sul file hmtl locale e non funziona quando l'html si trova sul server, fai quanto segue.
File.WriteAllText(path,doc.DocumentNode.OuterHtml);
A volte il codice sorgente della pagina è diverso quando lo scarichi con htmlweb (o webclient), quindi rendi di nuovo xpath usando questo nuovo file html.