栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > .Net

c# .net解析HTML节点,获取HTML节点,操作HTML节点

.Net 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c# .net解析HTML节点,获取HTML节点,操作HTML节点

参考

C#中如何类似jquery一样解析HTML节点_左右为南的专栏-CSDN博客

 一、安装Html Agility Pack

Html Agility Pack是一个开源的解析HTML元素的类库。可以在C#中直接操作,类似于XML操作方法。操作还是比较好理解的。

在NuGet中安装: PM>Install-Package HtmlAgilityPack -Version 1.8.2

https://www.nuget.org/packages/HtmlAgilityPack 这里可以有较多的版本选择。

在项目中HtmlAgilityPack.dll 

csdn下载地址:c#.net的HtmlAgilityPack.dll-网络基础文档类资源-CSDN下载HtmlAgilityPack是一个开源的解析HTML元素的类库。可以在C#中直接操作,类似于X更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/cplvfx/69333656

 必须引入 HtmlAgilityPack;

using HtmlAgilityPack;

如果你比较心急可以直接跳转 

4.1根据文本内容解析HTML,获取图片地址

二、解析HTML 2.1.根据本地文件解析HTML
var path = @"test.html";          
var doc = new HtmlDocument();  
doc.Load(path);  
var node = doc.DocumentNode.SelectSingleNode("//body");  
2.2.根据文本解析HTML
var html = @"  
  
  
    This is bold heading  
    

This is underlined paragraph

This is italic heading "; var htmlDoc = new HtmlDocument(); htmlDoc.LoadHtml(html); var htmlBody = htmlDoc.DocumentNode.SelectSingleNode("//body"); Console.WriteLine(htmlBody.OuterHtml);
2.3根据url地址解析HTML
var html = @"http://html-agility-pack.net/";  
HtmlWeb web = new HtmlWeb();  
var htmlDoc = web.Load(html);  
var node = htmlDoc.DocumentNode.SelectSingleNode("//head/title");  
Console.WriteLine("Node Name: " + node.Name + "n" + node.OuterHtml);
 
三、节点操作-获取节点、追加节点、删除节点
var htmlDoc = new HtmlDocument();
htmlDoc.LoadHtml(html);
// 获取TD下input标签SelectNodes
var htmlNodes = htmlDoc.DocumentNode.SelectNodes("//td/input");
// 获取第一个匹配的节点SelectSingleNode
string name = htmlDoc.DocumentNode
    .SelectSingleNode("//td/input")
    .Attributes["value"].Value;
// 根据ID获取节点
var htmlSelect = htmlDoc.GetElementbyId("ID");
// 创建节点信息
HtmlNode h2Node = HtmlNode.CreateNode(" This is h2 heading");
// 追加节点在末尾
htmlSelect.AppendChild(h2Node);
// 追加节点在起始位置
htmlSelect.PrependChild(h2Node);
 
// 下面是集合节点集合
var htmlBody = htmlDoc.DocumentNode.SelectSingleNode("//body");
		
HtmlNode h2Node = HtmlNode.CreateNode(" This is h2 heading");
HtmlNode pNode1 = HtmlNode.CreateNode("

This is appended paragraph 1

"); HtmlNode pNode2 = HtmlNode.CreateNode("

This is appended paragraph 2

"); HtmlNodeCollection children = new HtmlNodeCollection(htmlBody); children.Add(h2Node); children.Add(pNode1); children.Add(pNode2); htmlBody.AppendChildren(children); // 移除节点 var htmlBody = htmlDoc.DocumentNode.SelectSingleNode("//body"); HtmlNode node = htmlBody.ChildNodes[1]; node.Remove(); // 或者 node.RemoveAll(); // htmlBody.RemoveAllChildren(); // 最后上一个设置属性的例子 var h1Node = htmlDoc.DocumentNode.SelectSingleNode("//h1"); h1Node.Attributes.Append("style"); h1Node.SetAttributeValue("style", "color:blue");

四、实战 4.1根据文本内容解析HTML,获取图片地址 4.1.1文本内容
	  情况说明:近期有老师反映参赛孩子作品及费用发给我们没有收到参赛结果等问题,经公司调查,是有一些不法分子将我们的海报及链接更改为他们自己的,以骗取费用。

 

	  
       备注:任何人或单位以 的名义进行非法诈骗,此行为与 无关,请各位老师参赛时注意信息的准确性。                                                                                                          
                                                                                                            2020年07月08日  


       现附上诈骗情节比较严重的一个个体信息,请老师及家长们及时查看微信是否有此人。                                                                             篡改后的海报                                                                 
                                                                                                                                 诈骗人微信
                                                                                                                                                                                                                           
4.1.2获取图片地址
// 变量 HtmlContent 的值是上面的 文本html

HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(HtmlContent); //加载html
HtmlContent =System.Web.HttpUtility.UrlDecode(HtmlContent).Trim();//重新编码,并去除空格
HtmlNode HtmlContentNode = doc.DocumentNode;
string html = "";
if (HtmlContentNode != null)
{
	html = HtmlContentNode.InnerHtml;
// 代码中的.//img[@src]  是 XPath 路径代码,意思就是返回所有图片节点
	HtmlNodeCollection img = HtmlContentNode.SelectNodes(".//img[@src]"); //获取所有图片节点
	if (img != null)
	{
		foreach (var imgitem in img)
		{
			string href = imgitem.Attributes["src"].Value; //获取图片地址

			 //你可以做一些动作,例如保存图片到本地
		}
	}
}

//替换图地址,给没有前缀的图片路径增加前缀
html.Replace("src="/uploads/",$"src="http://www.xxxx.com/uploads/")

c#爬虫保存互联网图片和文件_橙cplvfx-技术踩坑记-CSDN博客///

/// 保存互联网图片/// /// 文件原始路径"如:http://www.baidu.com/1.png"/// 文件保存路径“如:D:\ceshi\1.png”/// public static boo.https://blog.csdn.net/cplvfx/article/details/116233145

 


延伸阅读 Xml中SelectSingleNode方法,xpath查找某节点用法

Xml中SelectSingleNode方法,xpath查找某节点用法 - bxzjzg - 博客园

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/905216.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号