Utilizzo di HTMLAgilityPack Estrai il testo, che non è tra i tag e arriva dopo il nodo specifico

c# html html-agility-pack web-scraping xpath

Domanda

Codice HTML:

 <b> CAR </b>
    <br></br>
  Car is something you can drive.
    <br></br>
    <br></br>

Codice C #:

        HtmlAgilityPack.HtmlDocument doc = new HtmlWeb().Load("http://website.com/x.html");

        if (doc != null)
        {
            HtmlNode link = doc.DocumentNode.SelectSingleNode("//b[contains(text(), 'CAR')]");

            webBrowser1.DocumentText = link.InnerText;
            webBrowser1.AllowNavigation = true;

            webBrowser1.ScriptErrorsSuppressed = true;
            webBrowser1.Visible = true;
        }

Quello che riesco a ottenere: CAR

Ho bisogno di ottenere:
AUTO
L'auto è qualcosa che puoi guidare.

Eventuali suggerimenti? Ho provato ad aggiungere i nodi successivi, ma ho dato NullReferenceExceptions: "// b [contiene (text (), 'CAR') / br]" e "// b [contains (text (), 'CAR') / br / br]"

Grazie in anticipo. PS.Vorrei evitare il Regex ..

Risposta accettata

XPATH fa distinzione tra maiuscole e minuscole (vedi qui per ulteriori informazioni su questo: È possibile ignorare case usando xpath e c #? ) Più la seconda frase che contiene 'Car' non è un elemento figlio di B. Potresti farlo funzionare in questo modo:

HtmlDocument doc = new HtmlWeb().Load("http://website.com/x.html");
foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//text()[contains(translate(., 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'), 'car')]"))
{
    Console.WriteLine(node.InnerText);
}

In un'applicazione console, verrà visualizzato questo:

 CAR

  Car is something you can drive.


Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché