C# Html解析之AngleSharp_C#Dom解析(强烈推荐)

C# Html解析之AngleSharp_C#Dom解析

一、AngleSharp简介

AngleSharp 是一个 .NET 的 HTML 解析器库。支持输出 Javascript、Linq 语法、ID 和 Class 选择器、动态添加节点、支持 Xpath 语法。比HtmlAgilityPack更好用一点。

官网地址:AngleSharp - Documentation

源码地址:https://github.com/AngleSharp/AngleSharp

Nuget地址:https://github.com/AngleSharp/AngleSharp

特点:

支持html5,支持Dom解析、生成、查询

支持css选择器查找

支持js 解析运行

  • 便携式的(使用.NET标准2.0)
  • 符合标准(与常绿浏览器完全相同)
  • 出色的性能(在大多数情况下优于类似的解析器)
  • 可扩展性(使用您自己的服务进行扩展)
  • 有用的抽象(类型助手,类似于构造的jQuery)
  • 功能齐全的DOM(您所知道的所有列表、迭代器和事件)
  • 表格提交(可随时登录)
  • 导航(浏览上下文就像浏览器选项卡控制它。净的!)。
  • LINQ增强了(使用带有DOM元素的LINQ,自然没有包装器)

二、AngleSharp安装

1.使用命令

Install-Package AngleSharp 

2.使用Nuget包管理

三、AngleSharp使用案例

1.html生成

//创建一个html的解析器
var parser = new HtmlParser();
//使用解析器解析文档
var document = parser.ParseDocument("<h1>Some example source</h1><p>This is a paragraph element");

Console.WriteLine("输出整个文档的html:");
Console.WriteLine(document.DocumentElement.OuterHtml);

//创建一个p元素
var p = document.CreateElement("p");
//给p元素添加文本
p.TextContent = "This is another paragraph.";

Console.WriteLine("在body中插入一个P元素");
document.Body.AppendChild(p);

Console.WriteLine("输出整个文档的html:");
Console.WriteLine(document.DocumentElement.OuterHtml);

 

2.html查询,Dom检索,根据Css选择器检索

//创建解析器
var parser = new HtmlParser();
//创建本地文档
var document = parser.ParseDocument("<ul><li>First item<li>Second item<li class='blue'>Third item!<li class='blue red'>Last item!</ul>");

//选取class='blue'的li集合,使用linq
var blueListItemsLinq = document.All.Where(m => m.LocalName == "li" && m.ClassList.Contains("blue"));

//选取class='blue'的li集合,使用css选择器
var blueListItemsCssSelector = document.QuerySelectorAll("li.blue");

Console.WriteLine("两种选择结果 ...");

Console.WriteLine();
Console.WriteLine("LINQ:");

foreach (var item in blueListItemsLinq)
    Console.WriteLine(item.TextContent);

Console.WriteLine();
Console.WriteLine("CSS:");

foreach (var item in blueListItemsCssSelector)
    Console.WriteLine(item.TextContent);

 

3.网络页面抓取

string page = NetHelper.Get("http://www.jnqianle.cn");
var parser = new HtmlParser();
var dom = parser.ParseDocument(page);

//var itemList = dom.QuerySelectorAll(".casecenter .list .item");
//foreach (var item in itemList)
//{
//    Console.WriteLine(item.TextContent.Trim());
//}

var listDom = dom.QuerySelector(".casecenter .list");

var titleList = listDom.QuerySelectorAll(".subtitle");
foreach (var item in titleList)
{
    Console.WriteLine(item.TextContent);
}

 

 

更多参考:

AngleSharp一些示例 - 人不自在 - 博客园

C# HTML解析工具HtmlAgilityPack使用实例(二)--Web页面

C# HTML解析工具HtmlAgilityPack使用实例(一)

C# HTML解析工具HtmlAgilityPack使用简介

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值