【问题标题】:Get Text from web with Html Agility Pack使用 Html Agility Pack 从 Web 获取文本
【发布时间】:2021-07-31 01:16:55
【问题描述】:

我有以下 HTML 结构:

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

我想得到字符串 יתרת עו"ש

我试过了:

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

但我有一个NullReferenceException。我做错了什么?

【问题讨论】:

    标签: c# html html-parsing html-agility-pack


    【解决方案1】:

    这里有几个问题。

    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

    【讨论】:

    • 谢谢,如果有教程可以理解属性和语法
    • 如果我想从网页而不是字符串加载怎么办
    • 如果你想从网络加载 HTML,你可以这样做:var web = new HtmlWeb(); var doc = web.Load(url);。或者您可以使用HttpClient 将内容下载为字符串。
    猜你喜欢
    • 2011-05-10
    • 2023-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-13
    • 2011-09-08
    • 1970-01-01
    相关资源
    最近更新 更多