zoukankan      html  css  js  c++  java
  • Asp.Net HTML 解析类库

    1、HtmlAgilityPack

    HtmlAgilityPack是.net下的一个HTML解析类库。支持用XPath来解析HTML。这个意义不小,为什么呢?因为对于页面上的元素的xpath某些强大的浏览器能够直接获取得到,并不需要手动写。节约了大半写正则表达式的时间,当然正则表达式有时候在进一步获取的时候还需要写,但是通过xpath解析之后,正则表达式已经要匹配的范围已经非常小了。而且,不用正则表达式在整个页面源代码上匹配,速度也会有提升。总而言之,通过该类库,先通过浏览器获取到xpath获取到节点内容然后再通过正则表达式匹配到所需要的内容,无论是开发速度,还是运行效率都有提升。

    但是使用XPaht比较麻烦,所以不推荐

    2、ScrapySharp

    ScrapySharp是基于HtmlAgilityPack开发的插件,直接根据html标签、ID、class标签查找dom,和jquery写法一样,推荐使用

    using HtmlAgilityPack;

    using ScrapySharp.Network;
    using ScrapySharp.Extensions;

    using System.Linq;

    var uri = new Uri("http://www.cnblogs.com/webapi/");
            var browser1 = new ScrapingBrowser();
            var html1 = browser1.DownloadString(uri);
            var htmlDocument = new HtmlDocument();
            htmlDocument.LoadHtml(html1);
            var html = htmlDocument.DocumentNode;
    
          //单个
    var title = html.CssSelect("title").First(); Response.Write(htmlNode.InnerHtml);      //集合 divs = html.CssSelect(".post_item"); foreach (var htmlNode in divs) { Response.Write(htmlNode.InnerHtml); }

    3、Fizzler

    功能和上边的ScrapySharp类似,选择器稍微强大点

    using HtmlAgilityPack;

    using Fizzler.Systems.HtmlAgilityPack;

    var web = new HtmlWeb();
            var document = web.Load("https://www.cnblogs.com/webapi/");
            var page = document.DocumentNode;
    
            foreach (var item in page.QuerySelectorAll(".post-item"))
            {
                var title = item.QuerySelector("a").InnerText;
                
                Response.Write(title);
               
                Response.Write("<br>");
            }

    4、CsQuery

    使用方法和使用jquery一样,可惜作者不更了

    using CsQuery;
    using CsQuery.Web;

    ServerConfig config = new ServerConfig();
            CQ dom = CQ.CreateDocument(html);
            CQ data = dom[".post-item-text"];
            string tep = "";
            foreach (var item in data)
            {
                tep += item.InnerHTML + "<br/>";
            }
            Response.Write(tep);

    5、AngleSharp

    这个没测试不做评价,有兴趣的请自行测试

    推荐使用Fizzler,小巧方便

    下载地址,后期更新

  • 相关阅读:
    idea 插件之 SequenceDiagram
    idea 中添加mybatis的mapper文件模板
    springBoot 中 logback配置文件详解
    Mysql show processlist、show profiles 排查问题
    input 输入框效验
    Java基础之comparator和comparable的区别以及使用
    mysql sql使用记录
    mysql 优化之索引的使用
    IDEA 中常用快捷键的使用
    form表单中method的get和post区别
  • 原文地址:https://www.cnblogs.com/webapi/p/13559525.html
Copyright © 2011-2022 走看看