zoukankan      html  css  js  c++  java
  • HtmlAgilityPack基础知识学习笔记

    HtmlAgilityPack是一款将HTML转换为XML,再通过XPATH来实现网页抓取的动态链接库。

    在解析DOM前先需要加载HTML的网页,可以用HtmlDocument类,此类封装了该方法。就拿博客园首页的各个文章的抓取为例,简单的加载为:

    WebClient wc = new WebClient();
                using (MemoryStream ms = new MemoryStream(wc.DownloadData(@"http://www.cnblogs.com"))) {
                    HtmlDocument doc = new HtmlDocument();
                    doc.Load(ms, Encoding.UTF8);}

    当把HTML加载进来以后,然后就可以解析HTML,此处用到了一个HtmlNode类,比较重要的有Attributes属性,例如<div class="diggit" onclick="DiggIt()">***</div>此处的class和onclick就是Attributes属性,可以在网页上面取到每个标题链接的URL。还有许多属性如FirstChild,LastChild,ChildNodes,ParentNode,都能够帮助找到你所需要的结果。同时,SelectSingleNode和SelectNodes对于找到所需要的内容也是有很大的帮助的。(SelectSingleNode:选择匹配 XPath 表达式的第一个XmlNode  SelectNodes:选择匹配 XPath 表达式的结点集合 XmlNodeList)。最后依靠InnerHtml和InnerText来输出想要得到的结果。

    同样拿博客园首页为例:

                    //获得所有博客总框架的ID节点
                    var main = doc.GetElementbyId("post_list");
                    //获得每一条博客的节点集合
                    var div = main.SelectNodes(".//a[@class='titlelnk' ]");
                    foreach (var each in div) {
                        //每条BLOG的标题名称
                        Console.WriteLine(each.InnerText.Trim());
                        //每条BLOG的URL
                        Console.WriteLine(each.Attributes[1].Value);
                    }

    这样就取到了标题以及链接。

    总结:这个简单的例子只是用到了最基础的功能。还可以查看查看Html Agility文档去领会学习其中更高级的用法。

  • 相关阅读:
    14-深度学习-卷积
    13-垃圾邮件分类2
    12-朴素贝叶斯-垃圾邮件分类
    11-分类与监督学习,朴素贝叶斯分类算法
    9-主成分分析
    8-特征选择
    7-逻辑回归实践
    6-逻辑回归
    2020安天杯-web的一点小思路
    攻防世界进阶--upload1
  • 原文地址:https://www.cnblogs.com/socialdk/p/2491407.html
Copyright © 2011-2022 走看看