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正規表現を避けたいですか?

受け入れられた回答

XPATHは大文字と小文字を区別します(これについてもっと詳しくは、xpathとc#を使って大文字小文字を無視することができますか? )。あなたは次のように動作させることができます:

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は合法ですか? はい、理由を学ぶ