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