HtmlAgilityPack 网页数据抓取基础应用
1 var doc = new HtmlAgilityPack.HtmlDocument(); 2 string html=""; 3 doc.LoadHtml(html); 4 Func<HtmlAgilityPack.HtmlNodeCollection, string, Dictionary<string, string>, bool, List<HtmlAgilityPack.HtmlNode>> getNodeByTagNameAndAttr = null; 5 Func<HtmlAgilityPack.HtmlNode, string, Dictionary<string, string>, bool> fun_Match = (c, tagName, Attr) => 6 { 7 return c.Name == tagName && !Attr.Select(cc => cc.Key).Except(c.Attributes.Select(cc => cc.Name)).Any() && c.Attributes.Join(Attr, a => new { a.Name, a.Value }, b => new { Name = b.Key, b.Value }, (a, b) => 1).Count() == Attr.Count; 8 }; 9 getNodeByTagNameAndAttr = (nodes, tagName, Attr, all) => 10 { 11 List<HtmlAgilityPack.HtmlNode> li = new List<HtmlAgilityPack.HtmlNode>(); 12 13 foreach (var c in nodes) 14 { 15 if (fun_Match(c, tagName, Attr)) 16 { 17 li.Add(c); 18 } 19 if (!all && li.Count > 0) 20 { 21 break; 22 } 23 if (c.HasChildNodes) 24 { 25 var nt = getNodeByTagNameAndAttr(c.ChildNodes, tagName, Attr, all); 26 if (nt != null) 27 { 28 li.AddRange(nt); 29 } 30 } 31 if (!all && li.Count > 0) 32 { 33 break; 34 } 35 36 } 37 return li; 38 39 }; 40 41 //读取doc.DocumentNode.ChildNodes 元素下的a标签(参数可以包含属性,也可以指定是否获取所有元素 42 List<HtmlAgilityPack.HtmlNode> node = getNodeByTagNameAndAttr(doc.DocumentNode.ChildNodes, "a", new Dictionary<string, string> { }, true);
分类:
C#
标签:
网页数据抓取
, HtmlAgilityPack基础使用
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现