AngleSharp :在 C# 中轻松解析和操作 HTML/XML 文档
AngleSharp 是一个 C# 库,主要用于解析和操作 HTML 和 XML 文档,类似于浏览器的 DOM 操作。允许你在 C# 中使用类似浏览器的方式处理网页数据,进行网页抓取、数据提取和处理等任务。
安装
第一步,老规矩,先安装
Install-Package AngleSharp
使用
解析 HTML 文档
using AngleSharp.Html.Parser;
var html = @"
Hello, World!
";
// 创建 HTML 解析器
var parser = new HtmlParser();
var document = parser.ParseDocument(html);
// 查找
元素
var h1 = document.QuerySelector("h1");
// 输出
中的文本
Console.WriteLine(h1.TextContent); // Output: Hello, World!
解析并抓取网页
// 创建 HttpClient 来抓取网页
using AngleSharp.Html.Parser;
using var httpClient = new HttpClient();
var html = await httpClient.GetStringAsync("https://www.hunji.xyz/");
// 创建 HTML 解析器
var parser = new HtmlParser();
var document = parser.ParseDocument(html);
// 查找页面中的标题
var title = document.QuerySelector("title");
// 输出页面标题
Console.WriteLine(title.TextContent);
DOM 操作
选择器和查询
var h1 = document.QuerySelector("h1"); // 获取第一个
元素
var allLinks = document.QuerySelectorAll("a"); // 获取所有 标签
获取元素属性
var firstLink = document.QuerySelector("a");
var href = firstLink.GetAttribute("href");
Console.WriteLine(href); // 输出链接地址
修改元素
var heading = document.QuerySelector("h1");
heading.TextContent = "New Heading"; // 修改文本内容
heading.SetAttribute("class", "new-class"); // 修改 class 属性
遍历节点
var links = document.QuerySelectorAll("a");
foreach (var link in links)
{
Console.WriteLine(link.GetAttribute("href"));
}
4异步操作
using AngleSharp.Html.Parser;
using AngleSharp.Dom;
using System;
using System.Net.Http;
using System.Threading.Tasks;
{
Console.WriteLine(link.GetAttribute("href"));
}
4异步操作
using AngleSharp.Html.Parser;
using AngleSharp.Dom;
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
// 使用异步抓取网页内容
using var client = new HttpClient();
var html = await httpClient.GetStringAsync("https://www.hunji.xyz/");
// 使用 HTML 解析器解析网页
var parser = new HtmlParser();
var document = await parser.ParseDocumentAsync(html);
// 操作 DOM
var h1 = document.QuerySelector("h1");
Console.WriteLine(h1.TextContent);
}
}
5. 实战:抓取网页中的所有链接
using AngleSharp.Html.Parser;
using AngleSharp.Dom;
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
// 获取网页
using var httpClient = new HttpClient();
var html = await httpClient.GetStringAsync("https://www.hunji.xyz/");
// 创建解析器
var parser = new HtmlParser();
var document = await parser.ParseDocumentAsync(html);
// 获取所有的链接
var links = document.QuerySelectorAll("a");
// 输出所有链接
foreach (var link in links)
{
var href = link.GetAttribute("href");
Console.WriteLine(href);
}
}
}
总结
AngleSharp 是一个强大的工具,可以帮助你在 C# 中进行 HTML 和 XML 的解析和操作。它对于网页抓取、数据提取等任务非常有用。通过提供类似浏览器的 DOM 操作接口,它能使你更容易地处理和操作网页内容。
欢迎关注我的公众号“Net分享”,技术文章第一时间推送,随缘更新 , 分享一些你可能注意不到的细节 
AngleSharp :在 C# 中轻松解析和操作 HTML/XML 文档的更多相关文章
- sax解析案例(javabean封装xml文档数据)
package itcast.sax; import java.io.IOException; import java.util.List; import javax.xml.parsers.Pars ...
- PHP中利用DOM和simplxml读取xml文档
实例 用DOM获取下列xml文档中所有金庸小说的书名,该xml文档所在位置为 ./books.xml: <?xml version="1.0" encoding=" ...
- 四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)
众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml- ...
- 文档对象模型操作xml文档
简介 :文档对象模型(DOM)是一种用于处理xml文档的API函数集. 2.1文档对象模型概述 按照W3C的定义,DOM是“一种允许程序或脚本动态地访问更新文档内容,结构和样式的.独立于平台和语言的规 ...
- 四种生成和解析XML文档的方法详解
众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml- ...
- 大杂烩 -- 四种生成和解析XML文档的方法详解
基础大杂烩 -- 目录 众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J DOM:在现在的Java JDK里都自带了,在xml-apis.jar包 ...
- 四种生成和解析XML文档的方法介绍
解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 1.DOM(Document Object Model) DOM是用与平台和语言无关的方式表示XML文档的官方 ...
- JavaEE实战——XML文档DOM、SAX、STAX解析方式详解
原 JavaEE实战--XML文档DOM.SAX.STAX解析方式详解 2016年06月22日 23:10:35 李春春_ 阅读数:3445 标签: DOMSAXSTAXJAXPXML Pull 更多 ...
- IOS 解析XML文档
前段时间想找点事做,就是试着看能不能用豆瓣的API做点什么,于是就碰到了这个问题——XML解析. 老师还没讲,只能自己去查. XML文档解析主要有SAX和DOM两种模式,IOS上两种模式都可以用,这里 ...
- Android XML文档解析(一)——SAX解析
---------------------------------------------------------------------------------------------------- ...
随机推荐
- django推导流程
目录 一.纯手撸web框架 二.基于wsgiref模块 三.代码封装优化 四.动静态网页 五.jinja2模块 六.前端.后端.数据库三者联动 一.纯手撸web框架 1.web框架的本质 理解1:连接 ...
- 时间轮在 Netty , Kafka 中的设计与实现
本文基于 Netty 4.1.112.Final , Kafka 3.9.0 版本进行讨论 在业务开发的场景中,我们经常会遇到很多定时任务的需求.比如,生成业务报表,周期性对账,同步数据,订单支付超时 ...
- 如何控制bean的加载顺序?
写在前面 springboot遵从约定大于配置的原则,极大程度的解决了配置繁琐的问题.在此基础上,又提供了spi机制,用spring.factories可以完成一个小组件的自动装配功能. 在一般业务场 ...
- Qt开发经验小技巧211-215
QMainWindow 在对停靠窗体进行排列的时候,有些不常用的设置容易遗忘,建议将 QMainWindow 的头文件函数过一遍一目了然. //设置停靠参数,不允许重叠,只允许拖动 this-> ...
- Qt编写安防视频监控系统35-onvif抓拍图片
一.前言 以前不知道onvif也可以做抓拍功能,直到近期重新用Onvif Device Test Tool工具测试的时候,发现还有抓图的接口,于是抓跑分析出要收发的数据,然后加入到自己封装的onvif ...
- AutoCAD 2020中文版建筑设计从入门到精通下载链接
AutoCAD 2020中文版建筑设计从入门到精通下载链接 链接:https://pan.baidu.com/s/1EgFHOSKfPrr9Xdp3bNA-pA或https://pan.baidu.c ...
- 《AutoCAD2020中文版基础教程》和《从零开始—AutoCAD 2020中文版基础教程》配套资源下载
<AutoCAD2020中文版基础教程>作者:姜春峰//武小紅//魏春雪中国青年出版社配套资源链接:https://pan.baidu.com/s/1kPGNKZEw2kOTGqZyXjp ...
- [转]fatal: remote error: The unauthenticated git protocol on port 9418 is no longer support问题解决
背景 因为居家办公,把代码从远程clone下来之后,发现使用npm install一直失败. 提示的错误:fatal: remote error: The unauthenticated git pr ...
- [转]springboot 监控 Actuator和Admin
参考链接: 1.springboot 监控 Actuator和Admin 2.SpringBoot:Actuator监控中心+AdminUI界面管理
- Element库的Vue版本ElementUI的本地引入方法
最近刚接触ElementUI,发现官方介绍的使用方法中只有npm安装和CDN引入这两种方式,没有本地引入的方法. 因为我的学习环境有时候是断网状态的,所以自己研究了一下本地引入的方法,记录在此. 1. ...