首页 > 其他分享 >HtmlAgilityPack 网页数据抓取基础应用

HtmlAgilityPack 网页数据抓取基础应用

时间:2023-08-03 14:45:42浏览次数:33  
标签:&& 网页 Attr HtmlAgilityPack 抓取 li tagName new Name

 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);

 

标签:&&,网页,Attr,HtmlAgilityPack,抓取,li,tagName,new,Name
From: https://www.cnblogs.com/itstac/p/17603280.html

相关文章

  • 小程序中web-view网页中打开或返回小程序页面
    小程序中web-view网页中使用JSSDK提供的接口打开或返回小程序页面1、引入JSSDK文件2、判断是否在小程序环境let_this=this;wx.miniProgram.getEnv(function(res){if(res.miniprogram){_this.miniprogram=true;}})3、根据是否小程序环境,执行操作if(th......
  • Adobe Animate (An) 2020网页设计软件下载和安装教程
    AnimateCC于2016年1月推出。同时,Adobe还将推出适用于桌面浏览器的HTML5播放器插件,作为其现有移动端HTML5视频播放器的延续。此外,根据Adobe官方原文的描述,公司将继续与业界伙伴如微软、Google等合作加强现有Flash内容的兼容性和安全性。AnimateCC将拥有大量的新特性......
  • PHP的ICP备案信息查询接口,从网站内容中抓取
    <?phpfunctionget_icp_info($url){//使用cURL获取目标网站的HTML内容$ch=curl_init();curl_setopt($ch,CURLOPT_URL,$url);curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);$output=curl_exec($ch);curl_close($ch);//解析HTML内容,查找......
  • 判断网页是否存在
    有点时候网页回显错误,不确定是ip被封了,还是网页没了 首先,可以开代理换ip试试,可以的话就是ip被封了 不可以的话,可以用全球ping和多地ping试试 如果全部超时,就证明网页不存在例如:  另外,也可以bp抓包看看,这样基本上就是没了 ps:仅为个人判断习惯,如有错误,欢迎指正......
  • 关于centos搭建网页—极速版
    前言:最近拿到一个服务器,要求搭建一个访问ip就可以看到的页面(由于仅做测试,没有后续要求,因此简单快捷是我的唯一要求....)参考链接:https://blog.csdn.net/m0_48385518/article/details/124894389 基础步骤:相关指令:   rpm-qa|grephttpd   yum-vinstallhttpd  ......
  • 电商curl编码请求,抓取天猫商品页面
    请求参数请求参数:num_iid=652874751412&is_promotion=1参数说明:num_iid:商品IDis_promotion:是否获取取促销价请求示例 测试入口 CurlPHPPHPsdkJAVAC#Pythoncurl-i"https://api-gw.onebound.cn/taobao/item_get/?key=<您自己的apiKey>&secret=<您自己的apiSecret>&num_iid......
  • 结合前端实现ORM对数据的增删改查、动静态网页,Django创建表关系、请求生命周期流程图
    通过结合前端页面实现ORM对数据的增删改查写一个页面,把数据库中的数据以表格的形式展示出来,然后在每一行的后面加两个按钮,分别是修改、删除的按钮。1.先创建一张UserInfo表格:在Django中没有提供tinyint、smallint,就只提供了int和bigint,如果想要写其他类型,需要自己定义......
  • php跳转到指定网页
    1、php如何实现登录成功后跳转页面2、php如何跳转新窗口3、PHP如何登录完成跳转上一访问页面php如何实现登录成功后跳转页面php如何实现登录成功跳转页面跳转首先将判断用户是否登录成功php跳转到指定网页,如果登录成功则使用“header()”函数,将http请求头的“Location”设......
  • 【工具】JS脚本|网页任意视频倍速播放(包括MOOC、本地视频、其他的视频)
    实际发布时间:2022-12-1422:54:52。csdn禁止浏览器脚本相关博客了,就只能重新发到这儿了。  只要浏览器播放视频时用的是<video>,而且当前页面只有这一个视频,就可以用这个脚本。  这是我很久以前为了倍速看MOOC视频,所以写的一个脚本,一直没有专门写博客去介绍它。刚刚,我想倍......
  • 爬虫:动态渲染网页
    #coding:utf-8importrequestsimportjsonurl='https://www.toutiao.com/search/suggest/hot_words/?_signature=_02B4Z6wo00101KzVDhQAAIDALNf0VpZzQrys8QqAAE.4WWTkOuz1HeMqTrJvEm2yLbAnK-d4x0dPsUEaw146LG7XljEYM0cn9I0bjErwG0PJkn2Kj0dDPMvau3aciANleL.uixoTY......