用C#开发的双色球走势图(一)
首先声明,个人纯粹无聊之作,不作商业用途。
我相信每个人都拥有一个梦想那就是有朝一日能中500W,这个也一直是我的梦想,并默默每一期双色球或多或少要贡献自己一点点力量,本人并不属于那种铁杆的彩票迷,每次都是纯粹娱乐而已,因为深知这个中奖的概率太低了,每一次买也是随机而已,运气好的话还能中个五块钱,运气不好的话随机买五注,甚至一个号码也中不到,每次去购买双色球都会看到走势图,所以个人最近就花了一点时间在这个上面,进行了一番研究,现将研究成果写出来,供园友一起探讨,愿各位早日中500W。
双色球开奖数据个人也是从某网站抓取的,不保存到数据库,根据这些原始数据去分析双色球的走势,如有基本走势图、红球三分区走势图、红球四分区走势图、红球七分区走势图、红球连号走势图、和值走势图、篮球综合走势图和历史同期等等组成。
首先介绍双色球原始数据是如何获取的?这个对于各位来说都比较简单,就是获取HTML源码,根据HTML去提取相关信息。
获取网页上数据后,再提取HTML相关信息,提取代码如下:
![](/assets/blank.gif)
![](/assets/blank.gif)
1 /// <summary> 2 /// 循环解析Tr 3 /// </summary> 4 /// <param name="wnRepo"></param> 5 /// <param name="content"><tbody></tbody>之间的内容</param> 6 private void ResolveTr(string content) 7 { 8 listWinNo.Clear(); 9 //-- 10 string trContent = string.Empty; 11 WinNo wn = null; 12 Regex regex = new Regex("<tr>"); 13 //在<tbody></tbody>之间的内容搜索所有匹配<tr>的项 14 MatchCollection matches = regex.Matches(content); 15 foreach (Match item in matches) 16 { 17 wn = new WinNo(); 18 //如果当前匹配项的下一个匹配项的值不为空 19 if (!string.IsNullOrEmpty(item.NextMatch().Value)) 20 { 21 trContent = content.Substring(item.Index, item.NextMatch().Index - item.Index); 22 } 23 //最后一个<tr>的匹配项 24 else 25 { 26 trContent = content.Substring(item.Index, content.Length - item.Index); 27 } 28 ResolveTd(ref wn, trContent); 29 //wnRepo.Insert(wn); 30 listWinNo.Add(wn); 31 } 32 }
View Code
存放双色球红球和篮球的实体类:
![](/assets/blank.gif)
![](/assets/blank.gif)
1 #region * 实体类 2 public class WinNo 3 { 4 /// <summary> 5 /// 期号 6 /// </summary> 7 public string QiHao { get; set; } 8 9 /// <summary> 10 /// 第一个红球号码 11 /// </summary> 12 public int R1 { get; set; } 13 /// <summary> 14 /// 第二个红球号码 15 /// </summary> 16 public int R2 { get; set; } 17 /// <summary> 18 /// 第三个红球号码 19 /// </summary> 20 public int R3 { get; set; } 21 /// <summary> 22 /// 第四个红球号码 23 /// </summary> 24 public int R4 { get; set; } 25 /// <summary> 26 /// 第五个红球号码 27 /// </summary> 28 public int R5 { get; set; } 29 /// <summary> 30 /// 第六个红球号码 31 /// </summary> 32 public int R6 { get; set; } 33 /// <summary> 34 /// 篮球号码 35 /// </summary> 36 public int B { get; set; } 37 38 /// <summary> 39 /// 用于存放历史数据 40 /// </summary> 41 public List<string> Data { get; set; } 42 } 43 #endregion
View Code
获取每一期的号码,并返回一个实体:
![](/assets/blank.gif)
![](/assets/blank.gif)
1 /// <summary> 2 /// 在一个TR中,解析TD,获取一期的号码 3 /// </summary> 4 /// <param name="wn"></param> 5 /// <param name="trContent"></param> 6 private void ResolveTd(ref WinNo wn, string trContent) 7 { 8 List<int> redBoxList = null; 9 //匹配期号的表达式 10 string patternQiHao = "<td align=\"center\" title=\"开奖日期"; 11 Regex regex = new Regex(patternQiHao); 12 Match qhMatch = regex.Match(trContent); 13 wn.QiHao = trContent.Substring(qhMatch.Index + 17 + patternQiHao.Length, 7); 14 //匹配蓝球的表达式 15 string patternChartBall02 = "<td class=\"chartBall02\">"; 16 regex = new Regex(patternChartBall02); 17 Match bMatch = regex.Match(trContent); 18 wn.B = Convert.ToInt32(trContent.Substring(bMatch.Index + patternChartBall02.Length, 2)); 19 //存放匹配出来的红球号码 20 redBoxList = new List<int>(); 21 //匹配红球的表达式 22 string patternChartBall01 = "<td class=\"chartBall01\">"; 23 regex = new Regex(patternChartBall01); 24 MatchCollection rMatches = regex.Matches(trContent); 25 foreach (Match r in rMatches) 26 { 27 redBoxList.Add(Convert.ToInt32(trContent.Substring(r.Index + patternChartBall01.Length, 2))); 28 } 29 //匹配红球的表达式 30 string patternChartBall07 = "<td class=\"chartBall07\">"; 31 regex = new Regex(patternChartBall07); 32 rMatches = regex.Matches(trContent); 33 foreach (Match r in rMatches) 34 { 35 redBoxList.Add(Convert.ToInt32(trContent.Substring(r.Index + patternChartBall07.Length, 2))); 36 } 37 //排序红球号码 38 redBoxList.Sort(); 39 //第一个红球号码 40 wn.R1 = redBoxList[0]; 41 //第二个红球号码 42 wn.R2 = redBoxList[1]; 43 wn.R3 = redBoxList[2]; 44 wn.R4 = redBoxList[3]; 45 wn.R5 = redBoxList[4]; 46 wn.R6 = redBoxList[5]; 47 }
View Code
通过线程池同时去分析双色球的这些数据,节省显示数据的时间,让用户体验更好,这个每个人应该都会。
1.基本走势图
基本走势图包括红球和篮球的走势情况,包括可以显示和不显示遗漏数据的走势图,效果图分别如下:
不带遗漏数据的走势图:
显示双色球基本走势图关键代码如下:
![](/assets/blank.gif)
![](/assets/blank.gif)
1 #region * 基本走势图 2 /// <summary> 3 /// 基本走势图 4 /// </summary> 5 /// <param name="obj"></param> 6 private void GetData1(object obj) 7 { 8 table.Clear(); 9 cleantable.Clear(); 10 if (listWinNo != null && listWinNo.Count > 0) 11 { 12 foreach (WinNo item in listWinNo) 13 { 14 DataRow dr = table.NewRow(); 15 dr["QiHao"] = item.QiHao; 16 dr["R" + item.R1] = "R" + GetStr(item.R1.ToString());//红1 17 dr["R" + item.R2] = "R" + GetStr(item.R2.ToString());//红2 18 dr["R" + item.R3] = "R" + GetStr(item.R3.ToString());//红3 19 dr["R" + item.R4] = "R" + GetStr(item.R4.ToString());//红4 20 dr["R" + item.R5] = "R" + GetStr(item.R5.ToString());//红5 21 dr["R" + item.R6] = "R" + GetStr(item.R6.ToString());//红6 22 dr["B" + item.B] = "B" + GetStr(item.B.ToString());//篮球 23 table.Rows.Add(dr); 24 25 DataRow cleandr = cleantable.NewRow(); 26 cleandr["QiHao"] = item.QiHao; 27 cleandr["R" + item.R1] = GetStr(item.R1.ToString());//红1 28 cleandr["R" + item.R2] = GetStr(item.R2.ToString());//红2 29 cleandr["R" + item.R3] = GetStr(item.R3.ToString());//红3 30 cleandr["R" + item.R4] = GetStr(item.R4.ToString());//红4 31 cleandr["R" + item.R5] = GetStr(item.R5.ToString());//红5 32 cleandr["R" + item.R6] = GetStr(item.R6.ToString());//红6 33 cleandr["B" + item.B] = GetStr(item.B.ToString());//篮球 34 cleantable.Rows.Add(cleandr); 35 } 36 37 for (int j = 1; j < 34; j++) 38 { 39 int xint = 0; 40 for (int i = 0; i < table.Rows.Count; i++) 41 { 42 if (string.IsNullOrEmpty(table.Rows[i]["R" + j].ToString())) 43 { 44 xint++; 45 table.Rows[i]["R" + j] = xint; 46 } 47 else 48 { 49 xint = 0; 50 } 51 } 52 } 53 54 for (int j = 1; j < 17; j++) 55 { 56 int xint = 0; 57 for (int i = 0; i < table.Rows.Count; i++) 58 { 59 if (string.IsNullOrEmpty(table.Rows[i]["B" + j].ToString())) 60
转载于:https://www.cnblogs.com/jara/p/4122377.html
用C#开发的双色球走势图(一)相关推荐
- 用C#开发的双色球走势图(原创)值得园友拥有(二)接上一篇
昨晚由于时间的原因只写了一部分内容,今天将这一部分内容补充完毕,多谢各位园友的支持. 这是用C#开发的双色球走势图(原创)值得园友拥有 新的园友可以看昨晚写的内容,以免脱节.首先回复园友的评论,有说好 ...
- 用C#开发的双色球走势图(二)
昨晚由于时间的原因只写了一部分内容,今天将这一部分内容补充完毕,多谢各位园友的支持. 这是用C#开发的双色球走势图(一)新的园友可以看昨晚写的内容,以免脱节.首先回复园友的评论,有说好的有说不好的,本 ...
- 用C#开发的双色球走势图(原创)值得园友拥有
首先声明,个人纯粹无聊之作,不作商业用途. 我相信每个人都拥有一个梦想那就是有朝一日能中500W,这个也一直是我的梦想,并默默每一期双色球或多或少要贡献自己一点点力量,本人并不属于那种铁杆的彩票迷,每 ...
- 用C#开发的双色球走势图
双色球开奖数据个人也是从某网站抓取的,不保存到数据库,根据这些原始数据去分析双色球的走势,如有基本走势图.红球三分区走势图.红球四分区走势图.红球七分区走势图.红球连号走势图.和值走势图.篮球综合走势 ...
- 仿淘宝双色球走势图自定义控件
博主爱玩彩票,今早刚好看到淘宝手机端彩票走势图表效果非常nice,于是乎code一上午,大致效果还是出来了,碍于数据就没有细调UI,效果图如下 实现思路也比较简单:几个recyclerView+手势分 ...
- 有啊百度知道双色球红蓝走势图
有啊百度知道双色球红蓝走势图[百度对话]中国具有全方位优势 据了解,在350公里时速运行时,国产福彩3D高铁车体振动低.噪声低.制动曲线平滑.综合舒适度最好,节能环保,各项指标均 达到了世界先 ...
- 用html制作双色球代码,Html5 canvas 绘制彩票走势图
因需要 要实现一个类似彩票走势图的功能,初次学Html5 ,很多地方不明白,前段时间也发帖请教过这个问题,也是没给个明确说话,在网上搜了很多,也没有实现的例子,今天仔细研究了下,发现其实也不是很难,现 ...
- 双色球号码走势图参考[原创软件][请广大彩友参考试用]
我把用软件绘制的走势图贴出来给大家参考使用,希望多给建议.如果实用,我可以供大家免费下载使用. 说明:号码记录从官方网上实时获取更新,目前共451期号码. 1.单号码走势--我是按照出球顺序,把每个号 ...
- Web图表开发--用ChartDirector画证券走势图
最近给客户做一个B/S架构的证券交易大屏幕软件,其中用到对证券指数的走势以及成交量的图形绘制,由于客户要求图形的清晰而且要做成于原来的老系统一样的图形显示效果,就试着用ChartDirector进行图 ...
最新文章
- 高科技领域零的突破永不嫌多 --- 我看嫦娥四号成功登陆月球背面
- iOS将产品进行多语言发布,开发
- 获取mac地址方法之一 GetAdaptersInfo()
- php 筛选数组,2020-07-24 php 通过数组键值对筛选数组
- 一步步编写操作系统 67 系统调用的实现1-2 68
- 蓝桥杯 ADV-111 算法提高 Quadratic Equation
- java8 foreach 伟参_【java8】为java8的foreach正名
- r语言boxcox异方差_R教程-15:线性回归中的异方差
- 淘宝返利是怎么回事?是真的还是假的?
- 【软件需求工程与建模】13组组队项目——项目总结
- 伽罗华有限域_信息论与编码:有限域
- 世界三大短篇小说之王 代表作介绍
- 海豚湾--纪录日本人如何杀戮海豚的
- 图解Pandas,数据结构介绍 | 图文第1篇
- json嵌套字典数据获取
- C#开发 虚拟翻书软件
- 不到三十行代码,免费看“美剧”
- [SUCTF 2019]EasySQL1
- MySQL事务 - 自增ID的回滚以及Auto Increment在InnoDB的实现
- 乌鸦与树(crow)
热门文章
- 给家庭组小朋友的分享和建议
- 晚清五大臣出洋考察事件解密
- Emiya 家今天的饭(CSP 2019 D2 T1)
- IP协议及IP数据包详解
- Windows11 Edge斯巴达浏览器开启IE模式 解决Win11没有自带IE浏览器的问题
- ArcGIS 网络分析 warning : the delay impedance of locationXX in Facilities exceeds the cutoff impedance
- Jetson Xavier NX USB-TTL串口使用
- HTML+CSS实现彩虹文字与聚光灯动画(background-clip和clip-path相关属性)
- 如何加强对Type-C数据线的充电保护?
- Android系统升级的机制概要