HtmlAgilityPack HTML操作类库的使用
HtmlAgilityPack是.NET下的一个开源的HTML解析类库。支持用XPath来解析HTML。命名空间:HtmlAgilityPack。
1、读取网络中html网页内容,获取网页中元素body内的html,处理所有img元素的src属性后以字符串返回
if (l_sWenBenHtmlFtpPath.Substring(l_sWenBenHtmlFtpPath.LastIndexOf(".") + ) == "html")
{
HtmlWeb htmlWeb = new HtmlWeb();
HtmlDocument htmlDoc = htmlWeb.Load(l_sWenBenHtmlFtpPath);
HtmlNode htmlNode = htmlDoc.DocumentNode;
HtmlNodeCollection nodes = htmlNode.SelectNodes("//body"); //使用xpath语法进行查询
if (nodes != null)
{
foreach (HtmlNode bodyTag in nodes)
{
HtmlNodeCollection nodes2 = htmlNode.SelectNodes("//img"); //使用xpath语法进行查询
if (nodes2 != null)
{
foreach (HtmlNode imgTag in nodes2)
{
string imgHttpPath = imgTag.Attributes["src"].Value;
imgTag.Attributes["src"].Value = l_sWenBenHtmlFtpPath.Substring(, l_sWenBenHtmlFtpPath.LastIndexOf("/") + ) + imgHttpPath;
}
}
l_sWenBenHtml = bodyTag.InnerHtml;
}
}
}
2、通过HtmlAgilityPack Html操作类库将html格式的字符串加载为html文档对象,再对html dom进行操作
//1.解码前台提交的html字串
string sDecodeString = HttpUtility.HtmlDecode(HttpUtility.UrlDecode(sEncodeString));
//2.拼接成完整的html字串
sDecodeString = @"<!DOCTYPE html><html><head><meta http-equiv=""content-type"" content=""text/html;charset=UTF-8""/>"
+ @"</head><body><div>"
+ sDecodeString + @"</div></body></html>";
//3.处理html的img标签的src属性-C#的HTML DOM操作
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(sDecodeString.Replace("\n", " "));
HtmlNode node = doc.DocumentNode;
HtmlNodeCollection nodes = node.SelectNodes("//img"); //使用xpath语法进行查询
if (nodes != null) //没有img节点时出错
{
//处理html字符串中img标签的src属性
foreach (HtmlNode imgTag in nodes)
{
string imgHttpPath = imgTag.Attributes["src"].Value;
imgHttpPath = imgHttpPath.Substring(imgHttpPath.LastIndexOf("/") + );
imgTag.Attributes["src"].Value = imgHttpPath;
}
}
//4.获取处理后的html字符串
sHtmlString = node.OuterHtml; //处理img中src属性后的html字符串
//5.将字符串存入html格式的文件中
//do something
......
HtmlAgilityPack HTML操作类库的使用的更多相关文章
- mysql操作类库--摘抄
<!--?php /** +---------------------------------- * MySQL操作类库 +---------------------------------- ...
- FtpHelper ftp操作类库
FtpHelper ftp操作类库 using System; using System.Collections.Generic; using System.Linq; using System.Te ...
- 仅100行的JavaScript DOM操作类库
如果你构建过Web引用程序,你可能处理过很多DOM操作.访问和操作DOM元素几乎是每一个Web应用程序的通用需求.我们我们经常从不同的控件收集信息,我们需要设置value值,修改div或span标签的 ...
- atitit.浏览器web gui操作类库 和 操作chrome浏览器的类库使用总结
atitit.浏览器web gui操作类库 和 操作chrome浏览器的类库使用总结 1. 常见标准 1 1.1. 录制重放 1 1.2. 一个窗体一个proxy cookie 1 1.3. exec ...
- 史林枫:开源HtmlAgilityPack公共小类库封装 - 网页采集(爬虫)辅助解析利器【附源码+可视化工具推荐】
做开发的,可能都做过信息采集相关的程序,史林枫也经常做一些数据采集或某些网站的业务办理自动化操作软件. 获取目标网页的信息很简单,使用网络编程,利用HttpWebResponse.HttpWebReq ...
- Excel操作类库最常用到的4种开源项目与MS Excel类库写操作对比分析性能
4种开源Excel读写类库与MS Excel类库写操作对比 软件开发过程中,经常需要将数据保存为.xls或.xlsx文件.之前发现微软提供的Microsoft.Office.Interop.Excel ...
- C#常用操作类库三(XML操作类)
/// <summary> /// XmlHelper 的摘要说明. /// xml操作类 /// </summary> public class XmlHelper { pr ...
- .net链接Oracle数据操作类库
public abstract class OracleHelper { public OracleHelper() { } /// <summary> /// 数据库连接字符串 /// ...
- Gs_Class.Gs_DataFunction数据操作类库20160225
using System;using System.Data;using System.Configuration;using System.Web;using System.Web.Security ...
随机推荐
- fastCGI模块
这个模块允许nginx同FastCGI协同工作,并且控制哪些参数将被安全传递.例: location / { fastcgi_pass localhost:9000; fastcgi_index in ...
- tag问题
- CAP理论、BASE理论
从分布式一致性谈到CAP理论.BASE理论 https://www.cnblogs.com/szlbm/p/5588543.html 问题的提出 在计算机科学领域,分布式一致性是一个相当重要且被广泛探 ...
- 小组项目需求——NABCD
关于项目微食堂的NABCD: N(need): 就我自己而言,每天在上午三四节课时就会想中午吃什么.而且大部分的课在二教,离食堂较远.可能会面临“抢不到饭”的问题.首先不知道去哪吃.吃什么,尤其在时间 ...
- 3、Selenium调用IEDriverServer打开IE浏览器
学习Selenium时若想调用IE浏览器,均需要以下步骤 (1).http://selenium-release.storage.googleapis.com/index.html 下载IEDrive ...
- 异常:idea一直刷新索引:updating index
解决方案:File ->Invalidate Caches/restart -> Invalidate and Restart 即重新构建索引
- java代码实现通讯录实例,我不知道这有什么用。,
运行显示: Friend:zl,Address:武大樱花美Colleagues:蔡依林,Department:麻城市人民政府 题目: 1.任务描述 完善上面通讯录名片的例子. 2.技能要点 掌握类继承 ...
- 分析诊断工具之一:MYSQL性能查看(多指标)
网上有很多的文章教怎么配置MySQL服务器,但考虑到服务器硬件配置的不同,具体应用的差别,那些文章的做法只能作为初步设置参考,我们需要根据自己的情况进行配置优化,好的做法是MySQL服务器稳定运行了一 ...
- declare handler 声明异常处理的语法
声明异常处理的语法 DECLARE {EXIT | CONTINUE} HANDLER FOR {error-number | SQLSTATE error-string | condition} S ...
- 数据库学习笔记(二)MySQL数据库进阶
MySQL 进阶 关于连表 左右连表: join 上下连表: union #自动去重 (当两张表里的数据,有重复的才会自动去重) union all #不去重 #上下连表示例: select sid, ...