using HtmlAgilityPack; using IOB_UT; using System; using System.Collections.Generic; using System.Linq; using System.Net.NetworkInformation; namespace IOB_WIN { /// /// Generica classe per implementare WebPageScraping (scaricamento web pages anche js-based x recupero informazioni) /// public class IobWPS : IobGeneric { /* -------------------------------------------------------------------------------- * Controlli dotati di GENERICA pagina WEB in cui cercare e recuperare informazioni * * - il file di conf deve contenere l'URL di base * - il file di conf deve contenere COSA cercare (es il "contenitore" del dato da estrarre) * * -------------------------------------------------------------------------------- */ /// /// Pagina web da scaricare /// protected string baseUri = "http://192.168.1.55"; /// /// Array di configurazione degli oggetti da cercare x decodifica e recupero info /// protected Dictionary dataLocatorLUT; /// /// Estende l'init della classe base... /// /// /// public IobWPS(AdapterForm caller, IobConfiguration IOBConf) : base(caller, IOBConf) { baseUri = $"http://{IOBConf.cncIpAddr}"; #if false // gestione invio ritardato contapezzi pzCountDelay = utils.CRI("pzCountDelay"); lastPzCountSend = DateTime.Now; lastWarnODL = DateTime.Now; // init connessione setConnection(); #endif // test completo funzionalità, da TOGLIERE in prod... wpsFullTest(); } /// /// Test funzioni WebPageScraping /// private void wpsFullTest() { // faccio un try-catch di test vari... try { // altra prova da fare... https://html-agility-pack.net/knowledge-base/23033578/how-do-i-screen-scrap-html-page-generated-by-javascript #if false webBrowser1.ScriptErrorsSuppressed = true; webBrowser1.Navigate(url); waitTillLoad(this.webBrowser1); HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); var documentAsIHtmlDocument3 = (mshtml.IHTMLDocument3)webBrowser1.Document.DomDocument; StringReader sr = new StringReader(documentAsIHtmlDocument3.documentElement.outerHTML); doc.Load(sr); #endif // faccio download preliminare pagina NON LEGGE var web = new HtmlWeb(); var htmlDoc = web.Load(baseUri); // salvo la pagina completa lgInfo("--------------------------------------"); lgInfo("Curr ParsedText"); lgInfo("--------------------------------------"); lgInfo(htmlDoc.ParsedText); lgInfo(""); lgInfo("--------------------------------------"); lgInfo("FULL TEXT"); lgInfo("--------------------------------------"); lgInfo(htmlDoc.Text); lgInfo("--------------------------------------"); } catch (Exception exc) { lgError(exc, "Eccezione durante wpsFullTest"); } } } }