C# HTMLNode 正确获取 div 的 innerText

C# HTMLNode get correctly innerText of div

我正在尝试正确提取从网站获取的 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 大师,所以如果它太简单而我错过了,请原谅我。

您可以编写查询以使用 xpath //div/a 查找所有节点,然后连接内部文本以获得您要查找的文本。确保 trim 文本去掉多余的空格和 returns.

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

输出:

Italy - Serie C:: group B

旁注...您可以使用不同的查询来确保通过使用 class 的名称来确保获得正确的 div。例如.SelectNodes("//div[@class='row row-tall mt4']/a");。这将为您提供 div.

下的所有 <a> 标签