Как я могу получить этот текст от h4? - PullRequest
0 голосов
/ 04 апреля 2019

(извините за мой английский, я бразилец)

Я пытаюсь получить InnerText из тега h4 с помощью HtmlAgilityPack, мне удалось получить значение этого типа в 3 из 4 тегов на нужном мне веб-сайте. Но последний является наиболее важным, и он просто возвращает пустое значение.

Возможно ли, что структура построения сайта требует другого способа получить это значение?

Это конкретный h4, который я пытаюсь извлечь InnetText ("356.386.496,02"):

<h4 class="text-black--opacity-60 fs-20 fs-sm-42 fs-lg-40 w-100 mt-3">
<span class="align-middle fs-12 fs-lg-12 pr-4">R$</span>
"356.386.496,02"
</h4>

Я пробовал это:

HtmlDocument htmlDocument = new HtmlDocument();
htmlDocument.LoadHtml(data);

var nodes = htmlDocument.DocumentNode.SelectNodes("//h4[@class='text-black--opacity-60 fs-20 fs-sm-42 fs-lg-40 w-100 mt-3']");

foreach (var node in nodes)
{
    Console.WriteLine(node.InnerText);
}
//Result in console:
//=> 

Обратите внимание, что метод SelectNodes не возвращает ноль, он отлично находит узел h4, но значение InnerText равно "".

1 Ответ

1 голос
/ 04 апреля 2019

попробуйте заменить "356.386.496,02" на 356.386.496,02 или на "" 356.386.496,02 ""
это решение должно работать

public static void Main()
    {
        var html = 
        @"<h4 class=""text-black--opacity-60 fs-20 fs-sm-42 fs-lg-40 w-100 mt-3"">
<span class=""align-middle fs-12 fs-lg-12 pr-4"">R$</span>
""56.386.496,02""
</h4>";

        var htmlDoc = new HtmlDocument();
        htmlDoc.LoadHtml(html);

        var htmlNodes = htmlDoc.DocumentNode.SelectNodes("//h4[@class='text-black--opacity-60 fs-20 fs-sm-42 fs-lg-40 w-100 mt-3']");

        foreach (var node in htmlNodes)
        {

            Console.WriteLine(node.InnerText);
        }
    }
...