我如何从h4获取此文本?

时间:2019-04-04 11:57:49

标签: c# html-agility-pack selectnodes

(对不起我的英语,我是巴西人)

我正在尝试使用HtmlAgilityPack从h4标签获取InnerText,我设法在我需要的网站的4个标签中的3个中获取了这种类型的值。但是最后一个是最重要的,它只返回一个空值。

网站构建的结构是否可能需要以不同的方式来获得该价值?

这是我要提取InnetText的特定h4(“ 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方法不会返回null,它可以完美地找到h4节点,但是InnerText值为“”。

1 个答案:

答案 0 :(得分:1)

尝试将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);
        }
    }