使用HTMLAgilityPack提取文本,該文本不在標記之間,而是在特定節點之後

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

HTML代碼:

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

C#代碼:

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

我得到了什麼:CAR

我需要得到:
汽車
汽車是你可以駕駛的東西。

有什麼建議麼?我嘗試添加下一個節點,但我給了NullReferenceExceptions:“// b [contains(text(),'CAR')/ br]”和“// b [contains(text(),'CAR')/ br / BR]“

提前致謝。 PS.I我想避免Regex ..

一般承認的答案

XPATH區分大小寫(有關此內容的更多信息,請參見此處: 是否可以使用xpath和c#忽略大小寫 )以及包含'Car'的第二個短語不是子元素B元素。你可以讓它像這樣工作:

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

在控制台應用程序中,它將輸出:

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



許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因