C# 在web抓取中使用html文档和节点与简单的字符串操作相比有什么好处?

C# 在web抓取中使用html文档和节点与简单的字符串操作相比有什么好处?,c#,html,string,web-scraping,C#,Html,String,Web Scraping,我正试图刮一个网页,这样我就可以从中收集信息 为此,我看了一本指南,介绍了如何使用“Html敏捷包”库制作web刮板。这是一个为HTML节点/元素选择和数据检索提供类的库,但在辛苦工作之后,我真的看不出使用高级对象比使用简单的string.substring有什么好处 在这两种情况下,我必须以某种方式获得HTML,并且在这两种情况下,我必须事先知道HTML的结构是什么。但是,虽然我可以说string.substring,从我感兴趣的元素到我想用所述库提取的值,我打赌,其他高端对象,我必须实例化它

我正试图刮一个网页,这样我就可以从中收集信息

为此,我看了一本指南,介绍了如何使用“Html敏捷包”库制作web刮板。这是一个为HTML节点/元素选择和数据检索提供类的库,但在辛苦工作之后,我真的看不出使用高级对象比使用简单的
string.substring
有什么好处

在这两种情况下,我必须以某种方式获得HTML,并且在这两种情况下,我必须事先知道HTML的结构是什么。但是,虽然我可以说
string.substring
,从我感兴趣的元素到我想用所述库提取的值,我打赌,其他高端对象,我必须实例化它们,浏览它们的各种方法,如果我不按照它们的规范使用它们,它们会崩溃和爆炸,我也必须学习,努力使它与高端抽象和最佳实践一起工作,最终得到100行代码,我想,这将给我与10行
字符串完全相同的结果。替换
代码


因此,在简单的
字符串
方法上使用高端对象提取HTML数据有什么意义吗?

通过使用HtmlAgilityPack可以获取所需的HTML元素,并使用库方法处理它:

var htmlTable = htmlDoc.DocumentNode.SelectNodes("//table");
if (htmlTable == null)
   return null;


foreach (HtmlNode table in htmlTable)
{
     var rows = table.SelectNodes("tr");
     foreach (HtmlNode row in table.SelectNodes("tr"))
     {
         // Here you can use very convenient methods of HtmlNode       
     } 
}
因此,您将拥有所有方便的方法来处理HTML元素。此外,使用此库,您可以使用属于
string
类型的方法

否则,如果使用
string
方法,则必须使用以下方法获取所需字符串:

  • string.IndexOf()
  • string.Substring()
  • string.LastIndexOf()
而不是这个简单的代码:

var htmlTable = htmlDoc.DocumentNode.SelectNodes("//table");

您使用的是哪种编程…@ShantanuSharma,C#