解析HTML利器AngleSharp介绍

AngleSharp是基于.NET(C#)开发的专门为解析xHTML源码的DLL组件。

项目地址:https://github.com/FlorianRappl/AngleSharp

我主要介绍是一些使用AngleSharp常用的方法,跟大家介绍,我会以http://www.cnblogs.com站点作为原型。 其它的类似组件有:
国内:Jumony
github地址:https://github.com/Ivony/Jumony
作者Blog地址:http://www.cnblogs.com/Ivony/
国外:Html Agility Pack
项目地址:http://htmlagilitypack.codeplex.com/
具体大家可以自行搜索对比三者的区别和性能。接下来咱们主要讨论主角是AngleSharp

  • 引入AngleSharp至项目,用NuGet工具执行命令(其实我是在装逼。)
    Install-Package AngleSharp

  • 在项目中添加引用Using AngleSharp

  • 首先我们获取CnBlogs首页的HTML源代码

    static public string GetHtml()
    {
    HttpWebRequest myReq =
    (HttpWebRequest)WebRequest.Create("http://www.cnblogs.com");
    HttpWebResponse response = (HttpWebResponse)myReq.GetResponse();
    // Get the stream associated with the response.
    Stream receiveStream = response.GetResponseStream(); // Pipes the stream to a higher level stream reader with the required encoding format.
    StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8); return readStream.ReadToEnd();
    }
  • 获取Cnblogs首页当前所有博客文章的标题

    private static void Main(string[] args) { //找出所有文章标题 string cnblogsHtml = GetHtml();

        //加载HTML
    var document = DocumentBuilder.Html(cnblogsHtml);
    //这里必须要使用== 不能使用Equals
    var titleItemList = document.All.Where(m => m.ClassName == "titlelnk");
    int iIndex = 1;
    foreach (var element in titleItemList)
    {
    Console.WriteLine(iIndex + ":" + element.InnerHtml);
    iIndex++;
    }
    }

    以上代码输出内容: 1:JNDI学习总结(三)——Tomcat下使用Druid配置JNDI数据源
    2:我们前端是怎么跟设计师沟通的
    3:MVC5+EF6 入门完整教程六
    4:试议常用Javascript 类库中 throttle 与 debounce 辅助函数的区别
    5:孤独的走过年轻
    6:上周热点回顾(11.10-11.16)
    7:Android动画-补间(Tween)动画
    8:朴素贝叶斯算法的python实现
    9:MVC三层级联方式
    10:C# 标签(条码)的打印与设计(一)
    11:OpenCASCADE Make Primitives-Box
    12:基于solr实现hbase的二级索引
    13:(十六)WebGIS中偏移补偿量引发的问题之探讨
    14:javascript小游戏--生命游戏
    15:Android动画-帧动画
    16:C# Socket学习笔记一
    17:lua表排序
    18:ZooKeeper系列 第一篇:ZooKeeper快速入门
    19:【插件开发】—— 9 编辑器代码分块着色-高亮显示!
    20:华盛顿大学计算机视觉课程笔记(一)

官方有提供详细的文档和例子,大家可以去看一下。此插件最大的优势:支持输出JavascriptLinq语法、IDClass选择器、动态添加节点。实为.NET开发之利器。

AngleSharp文档:https://github.com/FlorianRappl/AngleSharp/wiki/Documentation

AngleSharp例子(Demo):https://github.com/FlorianRappl/AngleSharp/wiki/Examples

解析HTML利器AngleSharp介绍的更多相关文章

  1. web前端自动化测试/爬虫利器puppeteer介绍

    web前端自动化测试/爬虫利器puppeteer介绍 Intro Chrome59(linux.macos). Chrome60(windows)之后,Chrome自带headless(无界面)模式很 ...

  2. Python 爬虫利器 Selenium 介绍

    Python 爬虫利器 Selenium 介绍 转 https://mp.weixin.qq.com/s/YJGjZkUejEos_yJ1ukp5kw 前面几节,我们学习了用 requests 构造页 ...

  3. IO模式调查利器blkiomon介绍

    本文链接地址: IO模式调查利器blkiomon介绍 blkiomon 是blktrace工具包带的一个方便用户了解IO情况的工具, 由于blktrace太专业,需要了解的IO协议栈的东西太多,blk ...

  4. Web调试利器fiddler介绍

    转载:http://blog.chinaunix.net/uid-27105712-id-3738821.html 最近在使用fiddler,发现这个真是非常最犀利的web调试工具,笔者这里强烈推荐给 ...

  5. 黄聪:C#类似Jquery的html解析类HtmlAgilityPack基础类介绍及运用

    Html Agility Pack下载地址:http://htmlagilitypack.codeplex.com/ Html Agility Pack 源码中的类大概有28个左右,其实不算一个很复杂 ...

  6. 【转】C#类似Jquery的html解析类HtmlAgilityPack基础类介绍及运用

    Html Agility Pack下载地址:http://htmlagilitypack.codeplex.com/ Html Agility Pack 源码中的类大概有28个左右,其实不算一个很复杂 ...

  7. C#解析HTML利器-Html Agility Pack

    今天刚开始做毕设....好吧,的确有点晚.我的毕设设计需要爬取豆瓣的电影推荐,于是就需要解析爬取下来的html,之前用Python玩过解析,但目前我使用的是C#,我觉得C#不比python差,有微软大 ...

  8. Java上的jQuery?解析HTML利器—Jsoup

    也许大家有过在java运行平台上解析html的经历,通常的方式是将HTML以XML的形式进行结点解析,调用java本身的xml解析类库.这样的方式很容易理解并且很方便,但习惯用jQuery的各位是否在 ...

  9. iOS-数据解析XML解析的多种平台介绍

    在iPhone开发中,XML的解析有很多选择,iOS SDK提供了NSXMLParser和libxml2两个类库,另外还有很多第三方类库可选,例如TBXML.TouchXML.KissXML.Tiny ...

随机推荐

  1. Android(java)学习笔记48:通过反射获得带参构造方法并且使用

    1. 反射获得带参构造方法并且使用: (1)获取字节码文件对象       Class c = Class.forName("cn.itcast_01.Person"); (2)获 ...

  2. win8+VS2012搭建OpenGL超级宝典的环境

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/booirror/article/details/36957799 自从公司搬到腾讯附近,每天上班都迟 ...

  3. 【luogu P2936 [USACO09JAN]全流Total Flow】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2936 菜 #include <queue> #include <cstdio> #i ...

  4. 12java基础继承

    26.定义类Human,具有若干属性和功能:定义其子类Man.Woman: 在主类Test中分别创建子类.父类和上转型对象,并测试其特性.   package com.hry.test; public ...

  5. android 学习笔记 杂记1

    getIntent().getExtras().get("intent"); 这个intent是数据包装的参数. 比如: Intent intent = new Intent(th ...

  6. vuex+vue-router拦截

    干就完了 项目中经常遇到这样一个场景,用户信息或者进行增删改的一些模块,需要根据用户是否登录,进行路由拦截,直接上代码 在store文件夹下的store.js中存放一个默认登录状态 /* * stor ...

  7. python字符串常用内建函数总结

    自己总结一些常用字符串函数,理解比较粗糙 1.字符串内建函数-大小写转换函数 (1)str.capitalize Help on method_descriptor: capitalize(...)  ...

  8. HTML5读取input[type=file]中的图片

    转载 https://blog.csdn.net/fd214333890/article/details/71250488

  9. 2019年第十届蓝桥杯c++A组java/c++组题解

    #include<iostream> #include<vector> using namespace std; vector <int > vec; long l ...

  10. 分别使用原生js和jQuery添加/删除元素的class属性

    一.原生js添加/删除元素的class属性: <!-- span元素原有class = "test" --> <span class="test&quo ...