HTMLAgilityPack ottiene innerText di classe

c# class html-agility-pack http innertext

Domanda

Sto cercando di ottenere il testo innerText di una classe. Questo è il mio codice:

using (HttpClient clientduplicate = new HttpClient())
{
    clientduplicate.DefaultRequestHeaders.Add("User-Agent",
        "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident / 6.0)");

    using (HttpResponseMessage responseduplicate = await clientduplicate.GetAsync(@"https://www.investing.com/news/stock-market-news/warren-buffett:-i-bought-$12-billion-of-stock-after-trump-won-456954")
    using (HttpContent contentduplicate = responseduplicate.Content)
    {
        try
        {
            string resultduplicate = await contentduplicate.ReadAsStringAsync();

            var websiteduplicate = new HtmlDocument();
            websiteduplicate.LoadHtml(resultduplicate);

            var titlesduplicate = websiteduplicate.DocumentNode.Descendants("div").FirstOrDefault(o => o.GetAttributeValue("class", "") == "arial_14 clear WYSIWYG newsPage");
            var match = Regex.Match(titlesduplicate.InnerText, @"(.*?)<!--", RegexOptions.Singleline).Groups[1].Value;

            Debug.WriteLine(match.TrimStart());
        }
        catch(Exception ex1)
        {
            var dialog2 = new MessageDialog(ex1.Message);
            await dialog2.ShowAsync();
        }
    }
}

Ora il problema è che questo mi restituirà anche il testo sull'immagine. Posso trovare una soluzione, ma mi chiedevo se c'è un altro approccio su questo. Qualcosa di più semplice / veloce.

Inoltre, quando lo uso su altri articoli / URL, ci sono altri bug minori.

Risposta accettata

Ci sono molti modi per farlo. Un modo è quello di rimuovere il div del carosello prima di ottenere innerText: doc.DocumentNode.Descendants("div").FirstOrDefault(_ => _.Id.Equals("imgCarousel"))?.Remove();



Related

Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow