HtmlAgilityPackでHTMLをサニタイズする方法は?

c# html-agility-pack

質問

私は基本的に私は、セル内進数を取得する必要があり、私のwebscraperで問題に直面していますteam_a_col home

<th>Med. goal subiti p/p</th>
<td class='team_a_col total'>0.76</td>
<td class='team_a_col home'>0.89
<td class='team_a_col away'>0.62</td></td>

その結果は次のようになります。0.89

しかし、あなたはhtmlが悪い構造を持っているのを見ることができるので、 0.89を得る代わりに、このコードでteam_a_col awayの内容を取得します:

node.SelectSingleNode(".//td[@class='team_a_col home']").InnerText.Trim();

どのように私は0.89を得ることができますか? </td><team_a_col away前にする必要があります。

受け入れられた回答

HtmlDocument.FixNestedTagstrue設定する必要がありtrue

string html = "<th>Med. goal subiti p/p</th><td class='team_a_col total'>0.76</td><td class='team_a_col home'>0.89<td class='team_a_col away'>0.62</td></td>";

var doc = new HtmlAgilityPack.HtmlDocument
{
    OptionFixNestedTags = true,
    OptionCheckSyntax = true,
    OptionAutoCloseOnEnd = true
};
doc.LoadHtml(html);

string tdText = doc.DocumentNode.SelectSingleNode(".//td[@class='team_a_col home']")?.InnerText.Trim();

FixNestedTags結果は次のとおりです。 0.89


人気のある回答

全体の行を取り、部分文字列を取得してデータを取得できますか?

var node = doc.DocumentNode.SelectNodes("//htmlelment/htmlelment");

string[] nodeArray = node[0].OuterHtml.Split(' ');


ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ