京东优惠叠加的获取
最近双十一,双十二,促销多的眼花缭乱,领了n多优惠卷,为了合理凑单实在是浪费了好多时间。
于是这几天写了一个小工具,可以分析优惠卷凑单页里所有商品都参加哪些活动,这样能节约我们凑单的时间。
可以快速找到 2件5折 又同时参加 199-100 活动的商品
这样就可以开心的剁手啦
这里我借鉴了很多前辈的经验
大神1:http://www.cnblogs.com/asxinyu/p/CSharp_HtmlAgilityPack_XPath_Weather_Data.html
大神2:https://www.cnblogs.com/jjg0519/p/6702833.html
大神3:https://www.cnblogs.com/cpcpc/archive/2012/09/10/2679098.html
大神4:https://blog.csdn.net/xing851483876/article/details/80817578
大神5:http://www.cnblogs.com/xxue/p/9977801.html
然后整理了一下各位大神的代码,写出这个小软件。
编码很多年,水平实在抱歉。
这个是获取优惠页最大页数。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | public int getMaxpage( string htmlstr) { int maxpage = 0; try { string html = htmlstr; HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(html); string goodClass = "//div[@id='J_topPage']" ; //string goodClass = @"//*[@class='gl-item']/dl/dd"; HtmlNodeCollection noneNodeList = doc.DocumentNode.SelectNodes(goodClass); foreach ( var node in noneNodeList) { JDspxx jdspxx = new JDspxx(); HtmlDocument docChild = new HtmlDocument(); docChild.LoadHtml(node.OuterHtml); var dc = docChild.DocumentNode.SelectSingleNode( "//i" ); maxpage = int .Parse(dc.InnerText); } return maxpage; } catch (Exception ex) { MessageBox.Show(ex.Message); } return maxpage; } |
这个是获取商品信息
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | public List<JDspxx> reHtml( string htmlstr) { List<JDspxx> jdlist = new List<JDspxx>(); try { string html = htmlstr; HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(html); string goodClass = "//li[@class='gl-item']" ; //string goodClass = @"//*[@class='gl-item']/dl/dd"; HtmlNodeCollection noneNodeList = doc.DocumentNode.SelectNodes(goodClass); foreach ( var node in noneNodeList) { JDspxx jdspxx = new JDspxx(); HtmlDocument docChild = new HtmlDocument(); docChild.LoadHtml(node.OuterHtml); string spmc = "//div[@class='p-name p-name-type-2']" ; HtmlNodeCollection listspmc = docChild.DocumentNode.SelectNodes(spmc); { HtmlDocument docChild1 = new HtmlDocument(); docChild1.LoadHtml(listspmc[0].OuterHtml); jdspxx.url = listspmc[0].ChildNodes[1].Attributes[ "href" ].Value; var dc = docChild1.DocumentNode.SelectSingleNode( "//em" ); jdspxx.spmc = dc.InnerText; } string price = "//div[@class='p-price']" ; HtmlNodeCollection listprice = docChild.DocumentNode.SelectNodes(price); { HtmlDocument docChild1 = new HtmlDocument(); docChild1.LoadHtml(listprice[0].OuterHtml); var dc = docChild1.DocumentNode.SelectSingleNode( "//i" ); jdspxx.price = dc.InnerText; } string yhxx = "//div[@class='p-icons']" ; HtmlNodeCollection listyhxx = docChild.DocumentNode.SelectNodes(yhxx); { HtmlDocument docChild1 = new HtmlDocument(); docChild1.LoadHtml(listyhxx[0].OuterHtml); var dclist = docChild1.DocumentNode.SelectNodes( "//i" ); List<Yhxx> yhlist = new List<Yhxx>(); if (dclist != null ) { foreach ( var dc in dclist) { Yhxx yh = new Yhxx(); yh.yh = dc.InnerText; yhlist.Add(yh); if (!Yhmc.yhmc.Contains(dc.InnerText)) { Yhmc.yhmc.Add(dc.InnerText); } } } jdspxx.yhlist = yhlist; } jdlist.Add(jdspxx); } return jdlist; } catch (Exception ex) { throw new Exception(ex.Message); } return jdlist; } |
软件下载地址
链接: https://pan.baidu.com/s/1p-kV0w11PpA6jNjsjhwEfw 提取码: c5gu
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库