使用Html Agility Pack快速实现解析Html(C#)

传统解析html标签的方式是利用HttpWebRequest获取html字符串,然后通过正则表达式进行解析,但是这种方式比较麻烦。有没有更简单的方式呢?有,那就是Html Agility Pack,它可以做到像用XmlDocument类来解析xml一样轻松、方便,并且是开源的

其源代码可以通过github下载,下载地址为:https://github.com/zzzprojects/html-agility-pack

其官网地址为:https://html-agility-pack.net/

 

进入官网后如下图:

点击图中绿色方框框住的Download Now按钮,进入下载页面,如下图:

点击图中的NuGet Download按钮,进入NuGet下载页面,如下图:

点击图中的绿色方框的按钮,进行复制内容Install-Package HtmlAgilityPack -Version 1.8.11,然后使用vistual studio进行下载,不会使用NuGet下载的小伙伴不用担心,我尽量讲详细一点,如果还看不懂,我还会给出参考教程。在这里说一句,如果作为开发者,如果连使用NuGet下载第三方库都不会用,那就说不过去了。好了,言归正传。

 

如果会使用NuGet的,下面用/*****/包起来的内容可以不用看。

/*****************************************************************************************************************************************/

接着打开你的vistual studio,选中你的项目,选择菜单栏中的  "工具"->"库程序包管理器"->"程序包管理器控制台",打开程序包管理控制台,并把刚才复制的内容粘贴到控制台内进行下载,如下图:

从图中可以看出:我安装前两个版本都没有成功,因为我的vs2012跟下载的版本对应不上,出现这种情况,可以选择更低一点的版本进行安装,前面图中NuGet下载页面下面列出了历史版本,选择更低的版本进行下载,我这里选择了最低的版本1.3.0进行下载就安装成功了。

 

NuGet使用教程:

NuGet使用教程(gif动态图的方式演示):https://blog.csdn.net/zxy13826134783/article/details/85336968

NuGet学习笔记(1)——初识NuGet及快速安装使用:https://kb.cnblogs.com/page/143190/

VS使用Nuget教程详解 Visual studio 安装第三方的组件库

https://www.cnblogs.com/dathlin/p/7705014.html

VS2013中Nuget程序包管理器控制台使用入门:http://www.cnblogs.com/wangqiideal/p/4672329.html

注意:进行了Nuget程序包管理器安装后,打开程序包管理控制台就变成"工具"->"NeGet库程序包管理器"->"程序包管理器控制台"

/***********************************************************************************************************************************************/

 

 

好了,做了那么多,终于是到了编程操作了,在这里,我们对百度首页的html进行解析

先上一张大图:

如上图,我们要拿到<title>标签里面的内容和id选择器为u1下的所有<a>标签“href”属性的内容和a标签里面的内容

完整代码如下:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using HtmlAgilityPack;                 //需要添加的命名空间


namespace HtmlAgilityDll
{
    class HtmlAgilityPackDemo
    {
        static void Main(string[] args)
        {
            
            string url = "http://www.baidu.com";
            HtmlWeb web = new HtmlWeb();
            //从url中加载
            HtmlDocument doc=web.Load(url);
            //获得title标签节点,其子标签下的所有节点也在其中
            HtmlNode headNode=doc.DocumentNode.SelectSingleNode("//title");
            //获得title标签中的内容
            string Title=headNode.InnerText;
            Console.WriteLine(Title);

            Console.WriteLine(".........................................");

            //获得id选择器为u1标签(是u1非ul(L))节点
            HtmlNode aNode = doc.DocumentNode.SelectSingleNode("//div[@id='u1']");
            //获得ul标签下的所有子节点
            HtmlNodeCollection aCollection=aNode.ChildNodes;
            foreach (var item in aCollection)
            {   
               //获得标签属性为href的值
               string aValue=item.Attributes["href"].Value;
               //获得标签内的内容
               string aInterText= item.InnerText;
               Console.WriteLine("属性值:"+aValue+"\t"+"标签内容:"+aInterText);
            }
            Console.ReadKey();
        }
    }
}

运行结果如下图:

好了,有小小的遗憾,从图中可以看出最后两个a标签中的网址前面不见了http:,可能是我下载的版本过低了吧。

 

Html Agility Pack使用教程:

https://www.cnblogs.com/xuliangxing/p/8004403.html

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zxy2847225301

测试使用

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值