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使用简介

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

  1. load xml error什么意思_XML文件解析实践(DOM解析)

    昨天完成了基于DOM的XML文件解析类,今天赶紧实践了一下,不得不说,实践中的坑还是很多的. 本来这个项目就是为了规范各个服务在使用MySQL数据库时候的配置项,由于之前我接触的都是Java服务,对于 ...

  2. c++解析xml文件_XML文件解析实践(DOM解析)

    昨天完成了基于DOM的XML文件解析类,今天赶紧实践了一下,不得不说,实践中的坑还是很多的. 本来这个项目就是为了规范各个服务在使用MySQL数据库时候的配置项,由于之前我接触的都是Java服务,对于 ...

  3. php dom xml解析,PHP使用DOM解析XML

    xml是一种严格的文档格式,有其自身的标准,解析xml,也有其标准,叫DOM标准.所有的xml.html都遵循DOM标准. 无论php,java,c,js,解析DOM树都遵循同样的DOM标准. 使用p ...

  4. XML解析-Dom4j的DOM解析方式更新XML

    Dom4j工具,是非官方的,不在jdk中. 使用步骤: 1)导入dom4j的核心包. dom4j-1.6.1.jar 2)编写Dom4j读取xml文件的代码 1.更新XML 1.1.写出内容到xml文 ...

  5. java dom xml解析和windows dom解析的差别

    1.java dom 子节点包括空节点. 2.java dom 文档节点值也是其的子节点. 而windows dom(mshtml.dll)子节点不包括空节点,而节点值也不是以子节点的方式来对待的.

  6. XML与web开发-01- 在页面显示和 XML DOM 解析

    前言: 关于 xml 特点和基础知识,可以菜鸟教程进行学习:http://www.runoob.com/xml/xml-tutorial.html 本系列笔记,主要介绍 xml 在 web 开发时需要 ...

  7. XML解析(二),DOM解析XML

    转载自   XML解析(二),DOM解析XML 上篇文章向大家介绍了SAX解析XML,为了这篇文章理解起来更加方便,所以还没看过SAX解析XML文章的,请戳这[XML解析(一)]SAX解析XML ,这 ...

  8. Java解析XML(DOM解析和SAX解析)

    前言:在程序中访问和操作XML文件一般有两种模型:DOM(文档对象模型)和流模型:在本篇文章中分别对应DOM解析和SAX解析. 目录 1 .DOM解析与SAX解析的相关知识点 1.1 DOM 1.2 ...

  9. JavaWeb-05 XML基础(Dom解析和Sax解析)

    JavaWeb-05 JavaWeb-XML基础(Dom解析和Sax解析) 一.XML的概述(了解) eXtensible Markup Language 可扩展标记语言 宗旨是传输数据,而非显示数据 ...

最新文章

  1. 撤销 git commit
  2. python爬虫 隐藏身份及设置代理
  3. Java访问对象的属性和行为
  4. iOS-深复制(mutableCopy)与浅复制(copy)
  5. Zend Framework学习(4)之前端控制器
  6. 计算机xp桌面没有下面的图标,Windows XP 启动后桌面无图标、无任务栏的问题
  7. 【五步完美整理Windows系统】
  8. LaTeX调整页眉宽度适应文本
  9. 影创科技助力云南首例MR混合现实肝脏手术成功实施
  10. 学术之声 | 专访邵俊教授:区块链用技术保证在链上说话算话
  11. 中国农业会计杂志中国农业会计杂志社中国农业会计编辑部2022年第12期目录
  12. 企业生产管理集成的核心工具—MES管理系统
  13. 营销-营销方式:营销方式
  14. 【总结】本地springboot连接腾讯云Redis
  15. python实现语音朗读
  16. D3.js SVG绘图实践:波浪动画
  17. python在工业机器人上的应用_请简述工业机器人主要应用场合
  18. java学习第二十五天
  19. android开发 清理内存不足,Android现在还需要清理内存吗?不!
  20. python原神抽卡模拟

热门文章

  1. 自己DIY装机后,如何使用U盘装系统
  2. java输入流输出流的互相转换(不需要经过临时文件啦超方便)
  3. 教大家如何批量采集义乌购上的图片和保存方法
  4. C语言:斗地主发牌器
  5. 记一次【该主机与 Cloudera Manager Server 失去联系的时间过长。 该主机未与 Host Monitor 建立联系】修复过程
  6. Mysql数据库高级、sql优化
  7. 佳能发布19um像素的全高清视频传感器
  8. Mysql 创建数据库字符集与排序规则
  9. VUE+vue-print-nb,vue打印我踩过的坑
  10. android切图尺寸_Cutterman 切图使用指南