C#HTMLNode正确获取div的innerText

时间:2019-03-31 20:41:11

标签: c# html html-agility-pack

我正在尝试正确提取从网站获取的div列表的innerText。

这是我想出的,但是由于缺少空格和-符号,因此仍然存在一些错误。

var first = mainmenuTitles[x].Descendants("div").FirstOrDefault(o => o.GetAttributeValue("class", "") == "left").Elements("a").ToList();
string final = "";
foreach (var countfirst in first)
   {
       final += countfirst.InnerText;
   }
Console.WriteLine("Tittle: " + final);

这是html代码的样子

<div class="row row-tall mt4"> 
    <div class="clear"> 
    <div class="left"> 
    <a href="/soccer/italy/">
        <strong>Italy</strong>
    </a>
    - 
    <a href="/soccer/italy/lega-pro-group-b/">Serie C:: group B</a> 
</div> <div class="right fs11"> March 31 </div> </div> </div>

我要获取的文本应如下所示-> 意大利-意甲C :: B组

我不是html专家,如果太简单了,请原谅我,我想念它。

1 个答案:

答案 0 :(得分:0)

您可以编写查询以使用xpath //div/a查找所有节点,然后将内部文本连接起来以获取所需的文本。确保修剪文本以消除多余的空格并返回。

Console.WriteLine(string.Join(" - ", doc.DocumentNode.SelectNodes("//div/a").Select(x => x.InnerText.Trim())));

输出:

Italy - Serie C:: group B

旁注...您可以使用不同的查询来确保通过使用类名也可以得到正确的div。例如.SelectNodes("//div[@class='row row-tall mt4']/a");。这将为您提供该div下的所有<a>标签。