Uso de HTMLAgilityPack Extrae texto, que no está entre las etiquetas y viene después de un nodo específico

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

Pregunta

Código HTML:

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

Código 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;
        }

Lo que consigo conseguir: CAR

Necesito conseguir:
COCHE
El auto es algo que puedes manejar.

¿Alguna sugerencia? He intentado agregar nodos siguientes, pero le di NullReferenceExceptions: "// b [contiene (texto (), 'CAR') / br]" y "// b [contiene (texto (), 'CAR') / br / br] "

Gracias por adelantado. PS.Me gustaría evitar Regex ..

Respuesta aceptada

XPATH distingue entre mayúsculas y minúsculas (consulte aquí para obtener más información sobre esto: ¿Es posible ignorar mayúsculas y minúsculas utilizando xpath y c #? ) Más la segunda frase que contiene 'Car' no es un elemento B secundario. Podrías hacer que funcione así:

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);
}

En una aplicación de consola, generará esto:

 CAR

  Car is something you can drive.


Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué