2. Creando bot monitorización en c#
- En este capítulo del curso de programación en c# con visual studio 2017 continuamos con la construcción de nuestro bot para monitorizar los cambios que se produzcan en un página determinada. Básicamente queremos saber cuando cambia un texto en una zona determinada de una página. Cuando el bot detecta un cambio desencadenara la acción que elijamos.
- Como sólo queremos detectar el cambio que se produce en una sección determinada de la página, vamos a navegar en el documento cuando lo tengamos cargado en memoria, antes de guardar en disco, para seleccionar y guardar únicamente la parte de la página que queremos monitorizar.
- Para ello utilizamos la libreria HTML Agility pack que nos facilita el trabajo.Os dejo un enlace a stackoverflow donde se explica como utilizar esta libreria: https://stackoverflow.com/questions/846994/how-to-use-html-agility-pack
- Una vez visto esto ya podemos ver el vídeo con la explicación:
- Os dejo el código que hemos visto en el vídeo:
//Parte que guardo pagina en disco solo lo que me interesa de la página
try
{
//Video utilizar y guardar en disco
WebClient cliente = new WebClient();
String pagina = String.Empty;
pagina = cliente.DownloadString("https://www.taiestado.com/");
StreamWriter sw = new StreamWriter("D:\\Temporal.html",false);
sw.Write(pagina);
sw.Close();
sw.Dispose();
//Video 2 guardar en disco solo la parte del fichero que me interesa
var doc = new HtmlAgilityPack.HtmlDocument();
HtmlAgilityPack.HtmlNode.ElementsFlags["br"] = HtmlAgilityPack.HtmlElementFlag.Empty;
doc.OptionWriteEmptyNodes = true;
var webRequest = HttpWebRequest.Create("https://www.taiestado.com/");
Stream stream = webRequest.GetResponse().GetResponseStream();
doc.Load(stream);
stream.Close();
string testDivSelector = "//div[@id='subcomentarios']";
var divString = doc.DocumentNode.SelectSingleNode(testDivSelector).InnerHtml.ToString();
Console.ReadLine();
}
catch (Exception ex)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(ex.ToString());
Console.ReadLine();
}
}