提问人:user2764693 提问时间:5/9/2021 最后编辑:Brian Rogersuser2764693 更新时间:5/10/2021 访问量:254
使用 Html Agility Pack 从 Web 获取文本
Get Text from web with Html Agility Pack
问:
我有以下 HTML 结构:
<div class="sub-title">
<span class="ng-binding">יתרת עו"ש</span>
我想得到字符串 יתרת עו“ש
我试过了:
var Header = doc.DocumentNode.SelectNodes("//span[@class=ng-binding]");
Console.WriteLine(Header.ToString());
但我得到了一个.我做错了什么?NullReferenceException
答:
0赞
Brian Rogers
5/10/2021
#1
这里有几个问题。
查询属性时,需要在属性值两边使用引号(单引号或双引号都应有效)。所以你的代码应该是:
var Header = doc.DocumentNode.SelectNodes("//span[@class='ng-binding']");
SelectNodes
如果搜索未找到匹配项,则返回包含一个或多个 或 null。如果只期望一个值,则需要使用 的索引来获取第一个值。从那里,您需要用于从节点获取文本值。所以你的代码应该是:HtmlNodeCollection
HtmlNodes
0
.InnerText
Console.WriteLine(Header?[0].InnerText);
这是一个工作演示:https://dotnetfiddle.net/nMS1Dg
评论
0赞
user2764693
5/11/2021
谢谢,我希望有教程可以理解属性和语法
0赞
user2764693
5/11/2021
如果我想从 Web 而不是字符串加载怎么办
0赞
Brian Rogers
5/11/2021
如果你想从 Web 加载 HTML,你可以这样做: .或者,可以使用 HttpClient
将内容下载为字符串。var web = new HtmlWeb(); var doc = web.Load(url);
评论