zoukankan      html  css  js  c++  java
  • 解析HTML利器AngleSharp介绍

    解析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

  • 相关阅读:
    CF1082E Increasing Frequency
    CF1083B The Fair Nut and String
    week2
    CF1082G Petya and Graph
    后缀数组学习笔记
    单纯形法
    验证rbd的缓存是否开启
    如何删除一台OSD主机
    Mon失效处理方法
    查询osd上的pg数
  • 原文地址:https://www.cnblogs.com/pandait/p/AngleSharp.html
Copyright © 2011-2022 走看看