Как очистить html с помощью HtmlAgilityPack?

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.FixNestedTags значение 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(' ');


Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow