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使用简介
C# Html解析之AngleSharp_C#Dom解析(强烈推荐)相关推荐
- load xml error什么意思_XML文件解析实践(DOM解析)
昨天完成了基于DOM的XML文件解析类,今天赶紧实践了一下,不得不说,实践中的坑还是很多的. 本来这个项目就是为了规范各个服务在使用MySQL数据库时候的配置项,由于之前我接触的都是Java服务,对于 ...
- c++解析xml文件_XML文件解析实践(DOM解析)
昨天完成了基于DOM的XML文件解析类,今天赶紧实践了一下,不得不说,实践中的坑还是很多的. 本来这个项目就是为了规范各个服务在使用MySQL数据库时候的配置项,由于之前我接触的都是Java服务,对于 ...
- php dom xml解析,PHP使用DOM解析XML
xml是一种严格的文档格式,有其自身的标准,解析xml,也有其标准,叫DOM标准.所有的xml.html都遵循DOM标准. 无论php,java,c,js,解析DOM树都遵循同样的DOM标准. 使用p ...
- XML解析-Dom4j的DOM解析方式更新XML
Dom4j工具,是非官方的,不在jdk中. 使用步骤: 1)导入dom4j的核心包. dom4j-1.6.1.jar 2)编写Dom4j读取xml文件的代码 1.更新XML 1.1.写出内容到xml文 ...
- java dom xml解析和windows dom解析的差别
1.java dom 子节点包括空节点. 2.java dom 文档节点值也是其的子节点. 而windows dom(mshtml.dll)子节点不包括空节点,而节点值也不是以子节点的方式来对待的.
- XML与web开发-01- 在页面显示和 XML DOM 解析
前言: 关于 xml 特点和基础知识,可以菜鸟教程进行学习:http://www.runoob.com/xml/xml-tutorial.html 本系列笔记,主要介绍 xml 在 web 开发时需要 ...
- XML解析(二),DOM解析XML
转载自 XML解析(二),DOM解析XML 上篇文章向大家介绍了SAX解析XML,为了这篇文章理解起来更加方便,所以还没看过SAX解析XML文章的,请戳这[XML解析(一)]SAX解析XML ,这 ...
- Java解析XML(DOM解析和SAX解析)
前言:在程序中访问和操作XML文件一般有两种模型:DOM(文档对象模型)和流模型:在本篇文章中分别对应DOM解析和SAX解析. 目录 1 .DOM解析与SAX解析的相关知识点 1.1 DOM 1.2 ...
- JavaWeb-05 XML基础(Dom解析和Sax解析)
JavaWeb-05 JavaWeb-XML基础(Dom解析和Sax解析) 一.XML的概述(了解) eXtensible Markup Language 可扩展标记语言 宗旨是传输数据,而非显示数据 ...
最新文章
- 撤销 git commit
- python爬虫 隐藏身份及设置代理
- Java访问对象的属性和行为
- iOS-深复制(mutableCopy)与浅复制(copy)
- Zend Framework学习(4)之前端控制器
- 计算机xp桌面没有下面的图标,Windows XP 启动后桌面无图标、无任务栏的问题
- 【五步完美整理Windows系统】
- LaTeX调整页眉宽度适应文本
- 影创科技助力云南首例MR混合现实肝脏手术成功实施
- 学术之声 | 专访邵俊教授:区块链用技术保证在链上说话算话
- 中国农业会计杂志中国农业会计杂志社中国农业会计编辑部2022年第12期目录
- 企业生产管理集成的核心工具—MES管理系统
- 营销-营销方式:营销方式
- 【总结】本地springboot连接腾讯云Redis
- python实现语音朗读
- D3.js SVG绘图实践:波浪动画
- python在工业机器人上的应用_请简述工业机器人主要应用场合
- java学习第二十五天
- android开发 清理内存不足,Android现在还需要清理内存吗?不!
- python原神抽卡模拟