介绍对象:NSoup
可以用类似js语法来解析html,不错的爬虫工具,支持net4.0++,就算不熟悉前端html+js语法的人来说应该也很容易上手
这里插播另一款解析工具(html_agility_pack):https://blog.csdn.net/czjnoe/article/details/106598713
github:https://github.com/GeReV/NSoup
gitHub下载慢?参考文章:https://blog.csdn.net/czjnoe/article/details/106034095
VS使用:Nuget直接搜索NSoup
demo地址:https://github.com/czjnoe/GitHubDemo/tree/master/NSoupDemo
代码实操:
以百度官网为例,这里只是尝试一下简单常用的方法,还有更多方法有待自己去发掘,方法要是不会使用,可以去查看github项目中的测试用例。
WebClient client = new WebClient();
client.Encoding = System.Text.Encoding.UTF8;
var html = client.DownloadString("https://www.baidu.com/");
NSoup.Nodes.Document doc = NSoup.NSoupClient.Parse(html);
//根据标签名获取节点
NSoup.Select.Elements metaElements = doc.GetElementsByTag("meta");
foreach (var item in metaElements)
{
}
//根据id获取节点
NSoup.Nodes.Element headClassElements = doc.GetElementById("head");
//根据class获取节点
var headIdElements = doc.GetElementsByClass("fm").ToList();
foreach (var item in headIdElements)
{
}
//根据属性名称获取节点
List<Element> attributeNameElements = doc.GetElementsByAttribute("class").ToList();
//根据属性值获取节点
List<Element> attributeValueElements = doc.GetElementsByAttributeValue("id", "su").ToList();
//根据jQuery选择器获取节点
var selectElments =doc.Select("#head").ToList();