iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C#使用AngleSharp库解析html文档
  • 213
分享到

C#使用AngleSharp库解析html文档

2024-04-02 19:04:59 213人浏览 泡泡鱼
摘要

一、简介 AngleSharp:https://GitHub.com/AngleSharp/AngleSharp AngleSharp是一个.net库,使您能够解析基于尖括号的超文本

一、简介

AngleSharp:https://GitHub.com/AngleSharp/AngleSharp

AngleSharp是一个.net库,使您能够解析基于尖括号的超文本,例如html,SVG和MathML,该库还支持未经验证的XML,AngleSharp的一个重要方面是CSS也可以解析。 
AngleSharp与类似的库(例如HtmlAgilityPack)相比的优势在于:

  • 公开的DOM使用的是W3C官方指定的api,即,甚至在AngleSharp中也可以使用querySelectorAll之类的东西。
  • 解析器还使用HTML 5.1规范,该规范定义了错误处理和元素校正。

AngleSharp库专注于标准合规性,交互性和可扩展性。因此,它为使用C#的web开发人员提供了从在任何现代浏览器中使用DOM所获得的所有可能性。

image

官方实例:Https://github.com/AngleSharp/AngleSharp.Samples 
这个简单的示例将使用Wikipedia的网站进行数据检索。

var config = Configuration.Default.WithDefaultLoader();
var address = "https://en.wikipedia.org/wiki/List_of_The_Big_Bang_Theory_episodes";
var context = BrowsinGContext.New(config);
var document = await context.OpenAsync(address);
var cellSelector = "tr.vevent td:nth-child(3)";
var cells = document.QuerySelectorAll(cellSelector);
var titles = cells.Select(m => m.TextContent);

二、使用AngleSharp生成自动缩进格式化的html方法

1、操作DOM示例

//创建一个(可重用)解析器前端
var parser = new HtmlParser();
//html DOM节点
var source = "
<h1>Some example source</h1>
<p>This is a paragraph element</p>
";

//解析源文件
var document = parser.Parse(source);
//创建P标签
var p = document.CreateElement("p");
p.TextContent = "This is another paragraph.";
//添加到DOM
document.Body.AppendChild(p);
//返回完整html
var html = document.DocumentElement.OuterHtml;
ViewData["html"] = html;

效果展示

2、更改标签属性

给标签添加自定义属性

var parser = new HtmlParser();
 //为以下源代码生成HTML DOM
var document = parser.Parse("
<ul>
<li>First element</li>
<li>Second element</li>
<li>third</li>
<li class='bla'>Last</li>
</ul>
");
//获取所有li元素并将test属性设置为值测试
var elements = document.QuerySelectorAll("li").Attr("test", "test");
 //元素仍然包含所有li元素
ViewData["html"] = document.DocumentElement.OuterHtml;

效果展示

3、使用AngleSharp生成html代码自动缩进格式化

var parser = new HtmlParser();
var document = parser.ParseDocument(text);
using (var writer = new StringWriter())
{
    document.ToHtml(writer, new PrettyMarkupFORMatter
                            {
                                Indentation = "\t",
                                NewLine = "\n"
                            });
    var indentedText = writer.ToString();
}

4、使用AngleSharp下载获取html代码

var requester = new DefaultHttpRequester("Mozilla/5.0 (windows NT 10.0; WOW64) AppleWEBKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36");
requester.Headers.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8");
requester.Headers.Add("Referer", "");
requester.Headers.Add("Accept-Language", "zh-Hans-CN,zh-Hans;q=0.8,en-US;q=0.5,en;q=0.3");
var context = BrowsingContext.New(Configuration.Default.WithLocaleBasedEncoding().WithDefaultLoader().WithDefaultCookies().With(requester));
//根据虚拟请求/响应模式创建文档
var document = context.OpenAsync(url).Result;
using (var writer = new StringWriter())
{
    document.ToHtml(writer, new PrettyMarkupFormatter
                            {
                                Indentation = "\t",
                                NewLine = "\n"
                            });
    var indentedText = writer.ToString();
}

5、爬取豆瓣美女图片

新建一个Belle类用于保存获取的图片信息

/// 
/// 解析html
/// 
public class Belle
{
        /// 
        /// 标题
        /// 
        public string Title { get; set; }
        /// 
        /// 图片地址
        /// 
        public string ImageUrl { get; set; }
}

获取html并解析

// 设置配置以支持文档加载
var config = Configuration.Default.WithDefaultLoader();
// 豆瓣地址
var address = "https://www.dbmeinv.com/dbgroup/show.htm?cid=4";
// 请求豆辨网
var document =  BrowsingContext.New(config).OpenAsync(address);
// 根据class获取html元素
var cells = document.Result.QuerySelectorAll(".panel-body li");
// We are only interested in the text - select it with LINQ
List list = new List();
foreach (var item in cells)
{
     var belle = new Belle
     {
         Title= item.QuerySelector("img").GetAttribute("title"),
         ImageUrl= item.QuerySelector("img").GetAttribute("src")
     };
     list.Add(belle);
 }
ViewData["html"] = list;

到此这篇关于C#使用AngleSharp库解析html文档的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: C#使用AngleSharp库解析html文档

本文链接: https://www.lsjlt.com/news/151414.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C#使用AngleSharp库解析html文档
    一、简介 AngleSharp:https://github.com/AngleSharp/AngleSharp AngleSharp是一个.NET库,使您能够解析基于尖括号的超文本...
    99+
    2024-04-02
  • C#如何使用AngleSharp库解析html文档
    这篇“C#如何使用AngleSharp库解析html文档”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#如何使用Angle...
    99+
    2023-07-02
  • C#使用HtmlAgilityPack组件解析html文档
    一、HtmlAgilityPack介绍 参考: GitHub:https://github.com/zzzprojects/html-agility-pack/releases 官网...
    99+
    2024-04-02
  • Python 文档解析lxml库的使用详解
    目录1.lxml库简介2.lxml库方法介绍3.代码实例1.lxml库简介 lxml 是 Python 常用的文档解析库,能够高效地解析 HTML/XML 文档,常用于 Python...
    99+
    2024-04-02
  • vbs如何解析html文档
    这篇文章给大家分享的是有关vbs如何解析html文档的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。关于VBS采集,网上流行比较多的方法都是正则,其实 htmlfile 可以解析 html 代码,但如果 desig...
    99+
    2023-06-08
  • C++使用jsoncpp库解析Json
    前言 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,和xml类似,本文主要对VS2008中使用Jsoncpp解析json的方法做一下记...
    99+
    2024-04-02
  • PHP中怎么使用XMLReader解析XML文档
    PHP中怎么使用XMLReader解析XML文档,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。PHP XMLReader的代码示例如下:< PHP &...
    99+
    2023-06-17
  • Python使用Beautiful Soup(BS4)库解析HTML和XML
    目录一、Beautiful Soup概述:安装:二、BeautifulSoup4简单使用三、BeautifulSoup4四大对象种类1、Tag:标签2、NavigableString...
    99+
    2024-04-02
  • vuex使用文档的示例分析
    小编给大家分享一下vuex使用文档的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Vuex是什么?Vuex 是一个专为 ...
    99+
    2024-04-02
  • 怎么使用POI将HTML文件转换为Word文档
    这篇文章主要讲解了“怎么使用POI将HTML文件转换为Word文档”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用POI将HTML文件转换为Word文档”吧!首先,我们需要在代码中添加...
    99+
    2023-07-06
  • Python怎么使用Beautiful Soup库解析HTML和XML
    今天小编给大家分享一下Python怎么使用Beautiful Soup库解析HTML和XML的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下...
    99+
    2023-07-06
  • 使用JAVA怎么将PDF转换为HTML文档
    使用JAVA怎么将PDF转换为HTML文档?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。引入Maven依赖<!-- https://mvnrepositor...
    99+
    2023-06-15
  • 如何使用 AST 解析器提取 Golang 函数文档?
    如何使用 ast 解析器提取 golang 函数文档?安装 go/ast 包。使用 go/parser 包解析 go 代码。遍历 *ast.funcdecl 节点以提取函数文档。使用提取...
    99+
    2024-04-18
    ast解析器 golang
  • PHP中怎么使用DOMDocument来处理HTML、XML文档
    小编给大家分享一下PHP中怎么使用DOMDocument来处理HTML、XML文档,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!PHP中使用DOMDocument来处理HTML、XML文档解析HTML// 解析&...
    99+
    2023-06-14
  • PHP中如何使用DOMDocument来处理HTML、XML文档
    这篇文章主要介绍了PHP中如何使用DOMDocument来处理HTML、XML文档,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php有什么特点1、执行速度快。2、具有很好的...
    99+
    2023-06-14
  • Python如何使用Beautiful Soup(BS4)库解析HTML和XML
    一、Beautiful Soup概述:Beautiful Soup支持从HTML或XML文件中提取数据的Python库;它支持Python标准库中的HTML解析器,还支持一些第三方的解析器lxml。Beautiful Soup自动将输入文档...
    99+
    2023-05-14
    html Python xml
  • 使用Python怎么爬取某文库文档数据
    使用Python怎么爬取某文库文档数据?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。python是什么意思Python是一种跨平台的、具有解释性、编译性、互动性和面向对象的脚本...
    99+
    2023-06-14
  • C#命令行参数解析库System.CommandLine使用
    命令行参数 平常在日常的开发过程中,会经常用到命令行工具。如cmd下的各种命令。 以下为sc命令执行后的截图,可以看到,由于没有输入任何附带参数,所以程序并未执行任何操作,只是输出了...
    99+
    2024-04-02
  • 使用MSHTML解析HTML页面
    要使用MSHTML解析HTML页面,首先需要导入mshtml这个Python模块。```pythonimport mshtml```...
    99+
    2023-09-14
    HTML
  • PHP中使用DOMDocument来处理HTML、XML文档的示例
    目录解析HTML生成一个XML总结其实从PHP5开始,PHP就为我们提供了一个强大的解析和生成XML相关操作的类,也就是我们今天要讲的 DOMDocument 类。不过我估计大部分人...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作