首页 > 其他分享 >HtmlAgilityPack.dll网页抓取数据

HtmlAgilityPack.dll网页抓取数据

时间:2022-12-01 15:33:02浏览次数:72  
标签:标签 HtmlAgilityPack 抓取 dll 获取 Html var nodes 节点


         根据公司的需求需要到指定网站抓取相关数据,即爬虫。

      

          网上有很多的工具以及第三方的dll,也可以用WebClient等进行抓取网站内容

 

,或者使用一些正则解析、截取字符串。

 

          所以在网上搜索一下,发现HtmlAgilityPack这个第三方的dll很不错,都是封装

 

好的方法,直接调用即可。是将gtml转化成xml,然后进行解析。

 

官网:​​http://htmlagilitypack.codeplex.com/​

下载:​​http://htmlagilitypack.codeplex.com/downloads/get/437941​


                  ​​http://zhoufoxcn.blog.51cto.com/792419/595344/​

           

 

相关属性:

Attributes             获取节点的属性集合
ChildNodes            获取子节点集合(包括文本节点)
Closed              该节点是否已关闭(</xxx>)
ClosingAttributes          在关闭标签的属性集合
FirstChild              获取第一个子节点
HasAttributes            判断该节点是否含有属性
HasChildNodes          判断该节点是否含有子节点
HasClosingAttributes        判断该节点的关闭标签是否含有属性(</xxx class="xxx">)
Id                 获取该节点的Id属性
InnerHtml             获取该节点的Html代码
InnerText             获取该节点的内容,与InnerHtml不同的地方在于它会过滤掉Html代码,而InnerHtml是连Html代码一起输出
LastChild              获取最后一个子节点
Line                获取该节点的开始标签或开始代码位于整个HTML源代码的第几行(行号)
LinePosition            获取该节点位于第几列
Name                Html元素名
NextSibling            获取下一个兄弟节点
NodeType              获取该节点的节点类型
OriginalName           获取原始的未经更改的元素名
OuterHtml             整个节点的代码
OwnerDocument         节点所在的HtmlDocument文档
ParentNode            获取该节点的父节点
PreviousSibling          获取前一个兄弟节点
StreamPosition          该节点位于整个Html文档的字符位置
XPath                根据节点返回该节点的XPath

 

代码:

  private string url = "​​http://www.baidu.com​​";

        /// <summary>
        /// 获取页面标签值
        /// </summary>
        public void ReadUrl()
        {
            HtmlWeb web = new HtmlWeb();
            HtmlAgilityPack.HtmlDocument doc = web.Load(hosturl);

            //1.取网页内容

            //var node = doc.DocumentNode;
            查找id为dfTitle的值
            //HtmlNodeCollection nodes = node.SelectNodes("//*[@id=\"dfTitle\"]");
          
            //if (nodes != null)
            //{
            //    //InnerText取整个网页内容,不包含html标签
            //    var title = nodes.FirstOrDefault().InnerText;
            //    //InnerText取整个网页内容,包含html标签
            //    var content = nodes.FirstOrDefault().InnerHtml;
               
            //}

 

            //取网页特定值
            //表示先从html查找table里的a标签,div[2]表示2层div
            string xpathstring = "/html/body/div[2]/div/table/tr/td/a";
            HtmlNodeCollection nodes = doc.DocumentNode.SelectNodes(xpathstring);

            if (nodes != null)
            {
                foreach (var htmlNode in nodes)
                {
                    var phref = htmlNode.Attributes["href"].Value;
                }
            }
        }

 

           

 

标签:标签,HtmlAgilityPack,抓取,dll,获取,Html,var,nodes,节点
From: https://blog.51cto.com/u_15898776/5902198

相关文章