博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[c#] Html Agility Pack 解析HTML
阅读量:5946 次
发布时间:2019-06-19

本文共 1257 字,大约阅读时间需要 4 分钟。

摘要

在开发过程中,很有可能会遇到这样的情况,服务端返回的是html的内容,但需要在客户端显示纯文本内容,这时候就需要解析这些html,拿到里面的纯文本。达到这样的目的可以有很多途径,比如自己写正则表达式,但对于没有什么规则的内容,就有点力不从心了。Html Agility Pack开源组件,可以通过xPath的方式快速的解析html内容。

一个例子

组件网址: ,你可以通过Nuget进行安装。

比如我们这里解析博客园首页文章列表,查看博客园首页列表html,如图所示:

抓取所有文章的名称

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using HtmlAgilityPack;namespace HtmlAgilityPackDemo{    class Program    {        static void Main(string[] args)        {            //初始化网络请求客户端            HtmlWeb webClient = new HtmlWeb();            //初始化文档            HtmlDocument doc = webClient.Load("http://www.cnblogs.com/");            //查找节点            HtmlNodeCollection titleNodes = doc.DocumentNode.SelectNodes("//a[@class='titlelnk']");            if (titleNodes != null)            {                foreach (var item in titleNodes)                {                    Console.WriteLine(item.InnerText);                }            }            Console.Read();        }    }}

输出

记得之前自己写过一个小工具,当时还是自己写的正则来匹配的,和这个组件相比确实很麻烦。

在上面的代码中,有[@class='xxx']的设置,它是根据html标签的属性查找node,当然你也可以进行其它的设置,如根据id查找,你可以这样写h3[@id='xxxx']。

获取节点的内容,可以通过下面的方式获取

node.InnerText  node.InnerHtml    node.OuterHtml

转载于:https://www.cnblogs.com/wolf-sun/p/6658335.html

你可能感兴趣的文章
Android onclicklistener中使用外部类变量时为什么需要final修饰【转】
查看>>
django中聚合aggregate和annotate GROUP BY的使用方法
查看>>
TFS简介
查看>>
docker管理平台 shipyard安装
查看>>
安装django
查看>>
Bootstrap3 栅格系统-简介
查看>>
ADODB类库操作查询数据表
查看>>
【java】File的使用:将字符串写出到本地文件,大小0kb的原因
查看>>
安卓音乐播放器开发实例
查看>>
some requirement checks failed
查看>>
存储管理
查看>>
HDU-2089-不要62
查看>>
Latex学习笔记0
查看>>
css控制div强制换行
查看>>
ios 底部用定位 fixed。在软件盘出来后,页面元素被顶上去一部分,fixed定位的footer也跑到了上面去。解决方法...
查看>>
HDU1257题解
查看>>
Iterator
查看>>
Spring MVC整合Velocity
查看>>
fiddler+android抓包工具配置使用
查看>>
Spring Data JPA 复杂/多条件组合分页查询
查看>>