使用Html敏捷包从web获取文本



我有以下HTML结构:

<div class="sub-title">
<span class="ng-binding">יתרת עו"ש</span>

我想得到字符串";Ş

我试过了:

var Header = doc.DocumentNode.SelectNodes("//span[@class=ng-binding]"); 
Console.WriteLine(Header.ToString());

但我得了NullReferenceException。我做错了什么?

这里有几个问题。

  1. 查询属性时,需要在属性值周围使用引号(单引号或双引号都可以(。所以你的代码应该是:

    var Header = doc.DocumentNode.SelectNodes("//span[@class='ng-binding']"); 
    
  2. SelectNodes返回包含一个或多个HtmlNodesHtmlNodeCollection,如果搜索未找到匹配项,则返回null。如果您只期望一个值,则需要使用0的索引来获得第一个值。从那里,您需要使用.InnerText从节点中获取文本值。所以你的代码应该是:

    Console.WriteLine(Header?[0].InnerText);
    

下面是一个工作演示:https://dotnetfiddle.net/nMS1Dg