热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

利用EntityFramework获得双色球数据库-mysql教程

双色球想必大家都很熟悉了,尽管屡买屡不中,但还是会买。以前就想过利用双色球的走势图得到双色球的数据库,至于得到数据库干什么倒没想过,不过对以往号码有没有重复出现还是挺好奇的。最近写EntityFramework的博客,所以这篇文章的标题里就出现了EntityF

双色球想必大家都很熟悉了,尽管屡买屡不中,但还是会买。以前就想过利用双色球的走势图得到双色球的数据库,至于得到数据库干什么倒没想过,不过对以往号码有没有重复出现还是挺好奇的。最近写Entity Framework的博客,所以这篇文章的标题里就出现了Entity F

双色球想必大家都很熟悉了,尽管屡买屡不中,但还是会买。以前就想过利用双色球的走势图得到双色球的数据库,至于得到数据库干什么倒没想过,不过对以往号码有没有重复出现还是挺好奇的。最近写Entity Framework的博客,所以这篇文章的标题里就出现了Entity Framework的身影,其实Entity Framework在下面的程序里只占据了很少的一部分。

下面开始介绍我获取数据库的方法。

双色球的走势图网址:http://zx.caipiao.163.com/trend/ssq_basic.html

打开之后,如下图所示,默认显示的是最近30期的:

根据期号进行查询,可以得到如下的链接:

http://zx.caipiao.163.com/trend/ssq_basic.html?beginPeriod=2012110&endPeriod=2012139&historyPeriod=2012140&year=

很容易可以发现beginPeriod表示的是开始期号,endPeriod表示的截止期号。有了这两个参数,就可以得到任意期号的数据了。根据上述方法查询,得到网易彩票提供的最早数据是2004009期。

下面分析走势图的html结构。

谷歌浏览器中,按Ctrl+Shift+i 或Firefox中使用Firebug可查看html的结构。

下面给出获取之间内容的代码:

   1:          /// 
   2:          /// 获取网页的双色球数据
   3:          /// 
   4:          /// 开始期号
   5:          /// 截止期号
   6:          /// 
   7:          private string GetOriginData(string startQH, string endQH)
   8:          {
   9:              string path = string.Format("http://zx.caipiao.163.com/trend/ssq_basic.html?beginPeriod={0}&endPeriod={1}", startQH, endQH);
  10:              WebRequest wp = WebRequest.Create(path);
  11:              Stream s = wp.GetResponse().GetResponseStream();
  12:              StreamReader sr = new StreamReader(s);
  13:              string cOntent= sr.ReadToEnd();
  14:              sr.Close();
  15:              s.Close();
  16:              int startIndex = content.IndexOf("");
  17:              int endIndex = content.IndexOf("");
  18:              cOntent= content.Substring(startIndex, endIndex - startIndex).Replace("", "").Replace("", "").Replace("\r\n", "");
  19:              return content;
  20:          }

中的内容就是和了,下面给出解析和的代码,有注释,就不多解释了。

   1:          /// 
   2:          /// 循环解析Tr
   3:          /// 
   4:          /// 
   5:          /// 之间的内容
   6:          private void ResolveTr(IRepository wnRepo, string content)
   7:          {
   8:              string trCOntent= string.Empty;
   9:              WinNo wn = null;
  10:              Regex regex = new Regex("");
  11:              //在之间的内容搜索所有匹配的项
  12:              MatchCollection matches = regex.Matches(content);
  13:              foreach (Match item in matches)
  14:              {
  15:                  wn = new WinNo();
  16:                  //如果当前匹配项的下一个匹配项的值不为空
  17:                  if (!string.IsNullOrEmpty(item.NextMatch().Value))
  18:                  {
  19:                      trCOntent= content.Substring(item.Index, item.NextMatch().Index - item.Index);
  20:                  }
  21:                  //最后一个的匹配项
  22:                  else
  23:                  {
  24:                      trCOntent= content.Substring(item.Index, content.Length - item.Index);
  25:                  }
  26:                  ResolveTd(wn, trContent);
  27:                  wnRepo.Insert(wn);
  28:              }
  29:          }
  30:          /// 
  31:          /// 在一个TR中,解析TD,获取一期的号码
  32:          /// 
  33:          /// 
  34:          /// 
  35:          private void ResolveTd(WinNo wn, string trContent)
  36:          {
  37:              //匹配期号的表达式
  38:              string patternQiHao = ";
  39:              Regex regex = new Regex(patternQiHao);
  40:              Match qhMatch = regex.Match(trContent);
  41:              wn.QiHao = trContent.Substring(qhMatch.Index + 17 + patternQiHao.Length, 7);
  42:              //匹配蓝球的表达式
  43:              string patternChartBall02 = "";
  44:              regex = new Regex(patternChartBall02);
  45:              Match bMatch = regex.Match(trContent);
  46:              wn.B = Convert.ToInt32(trContent.Substring(bMatch.Index + patternChartBall02.Length, 2));
  47:              //存放匹配出来的红球号码
  48:              redBoxList = new List<int>();
  49:              //匹配红球的表达式
  50:              string patternChartBall01 = "";
  51:              regex = new Regex(patternChartBall01);
  52:              MatchCollection rMatches = regex.Matches(trContent);
  53:              foreach (Match r in rMatches)
  54:              {
  55:                  redBoxList.Add(Convert.ToInt32(trContent.Substring(r.Index + patternChartBall01.Length, 2)));
  56:              }
  57:              //匹配红球的表达式
  58:              string patternChartBall07 = "";
  59:              regex = new Regex(patternChartBall07);
  60:              rMatches = regex.Matches(trContent);
  61:              foreach (Match r in rMatches)
  62:              {
  63:                  redBoxList.Add(Convert.ToInt32(trContent.Substring(r.Index + patternChartBall07.Length, 2)));
  64:              }
  65:              //排序红球号码
  66:              redBoxList.Sort();
  67:              //第一个红球号码
  68:              wn.R1 = redBoxList[0];
  69:              //第二个红球号码
  70:              wn.R2 = redBoxList[1];
  71:              wn.R3 = redBoxList[2];
  72:              wn.R4 = redBoxList[3];
  73:              wn.R5 = redBoxList[4];
  74:              wn.R6 = redBoxList[5];
  75:          }

下面给出使用到Entity Framework部分的代码:

首先,新建一个WinNo实体,用于表示双色球信息:

   1:      public class WinNo
   2:      {
   3:          /// 
   4:          /// 主键
   5:          /// 
   6:          public int ID { get; set; }
   7:          /// 
   8:          /// 期号
   9:          /// 
  10:          public string QiHao { get; set; }
  11:  &#160;
  12:          /// 
  13:          /// 第一个红球号码
  14:          /// 
  15:          public int R1 { get; set; }
  16:          /// 
  17:          /// 第二个红球号码
  18:          /// 
  19:          public int R2 { get; set; }
  20:          /// 
  21:          /// 第三个红球号码
  22:          /// 
  23:          public int R3 { get; set; }
  24:          /// 
  25:          /// 第四个红球号码
  26:          /// 
  27:          public int R4 { get; set; }
  28:          /// 
  29:          /// 第五个红球号码
  30:          /// 
  31:          public int R5 { get; set; }
  32:          /// 
  33:          /// 第六个红球号码
  34:          /// 
  35:          public int R6 { get; set; }
  36:          /// 
  37:          /// 篮球号码
  38:          /// 
  39:          public int B { get; set; }
  40:      }

其次,使用默认配置即可。

第三,新建一个上下文:SSQContext,代码如下:

   1:      public class SSQContext : DbContext
   2:      {
   3:          public SSQContext()
   4:          {
   5:              //Database.SetInitializer(new DropCreateDatabaseAlways());
   6:              Database.SetInitializer(null);
   7:          }
   8:  &#160;
   9:          public DbSet WinNos { get; set; }
  10:  &#160;
  11:          protected override void OnModelCreating(DbModelBuilder modelBuilder)
  12:          {
  13:              modelBuilder.Conventions.Remove();
  14:              base.OnModelCreating(modelBuilder);
  15:          }
  16:      }

第四,运行程序,结果如下图所示:

本程序的源代码下载地址为:http://www.ef-community.com/forum.php?mod=viewthread&tid=44&extra=page%3D1

推荐阅读
  • 导读:今天编程笔记来给各位分享关于PHP的前端用什么工具的相关内容,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: ... [详细]
  • 开发工具WebDeveloper1.1.8https:addons.mozilla.orgen-USfirefoxaddon60以工具栏的形式对网页的(X)HTML、脚本、多媒体、 ... [详细]
  • 在使用Firefox浏览器打开本地HTML文件时,尝试调用Canvas的drawImage方法可能会遇到NS_ERROR_NOT_AVAILABLE错误。本文探讨了这一问题的原因及解决方案。 ... [详细]
  • 本文详细介绍了在Ubuntu 7.10操作系统上安装多种常用软件的方法,包括RAR压缩工具、即时通讯软件Pidgin、办公软件永中Office 2007试用版、多线程下载软件MultiGet及d4x、FTP客户端gFTP与FireFTP插件,以及P2P下载工具aMule。每部分都提供了具体的安装步骤和配置方法。 ... [详细]
  • 本文旨在介绍一系列提升工作效率的浏览器插件和实用小工具,帮助用户在日常工作中更加便捷高效。内容由原作者授权发布。 ... [详细]
  • 解决Bootstrap DataTable Ajax请求重复问题
    在最近的一个项目中,我们使用了JQuery DataTable进行数据展示,虽然使用起来非常方便,但在测试过程中发现了一个问题:当查询条件改变时,有时查询结果的数据不正确。通过FireBug调试发现,点击搜索按钮时,会发送两次Ajax请求,一次是原条件的请求,一次是新条件的请求。 ... [详细]
  • 整合百度UEditor编辑器于ASP后端的实现步骤与技巧
    随着微软停止对XP系统的支持,公司已全面升级至Windows 7。早期网站创建时使用的编辑器仅兼容IE6浏览器,而如今系统更新后,原有的编辑器已无法满足新环境的需求。本文详细介绍了如何将百度UEditor编辑器整合到ASP后端,包括实现步骤和实用技巧,确保网站在新系统下仍能高效运行并提供良好的用户体验。 ... [详细]
  • 首先,我有点像jQuerynoob和整个PHPnoob,所以如果这是一个愚蠢的问题,我感到很抱歉(尽管我已经搜索了Internet,尤其是这个网站的上下无法弄清我的意思.错了).另 ... [详细]
  • 不确定是否有任何Firefox附加工具可用于检查JavaScript语法,var声明,甚至是预编译可用?我发现在webhtml页面中调试JavaScript非常困难.我必须在那里添 ... [详细]
  • from:http:www.myquickphp.comarchives147(请求的跨域服务器不支持常规”?”查询请求时的解决方案)昨天第一次做VIP需求时,发现一 ... [详细]
  • 前端图片合成技术_靠谱的前端需要做哪些准备?
    Web前端开发源于传统的互联网,互联网普及让人才需求量居高不下,随着移动互联网的高速发展,移动终端的前端开发也越来越受到重视, ... [详细]
  • Pikachu平台SQL注入漏洞详解
    本文详细介绍了SQL注入漏洞的基本原理、攻击流程、不同类型注入点的识别与利用方法,以及基于union联合查询、报错信息、布尔盲注、时间盲注等多种技术手段的信息获取方式。同时,探讨了如何通过SQL注入获取操作系统权限,以及HTTP Header注入和宽字节注入等高级技巧。最后,提供了使用SQLMap自动化工具进行漏洞测试的方法和常见的SQL注入防御措施。 ... [详细]
  • 本文深入探讨了HTML5中十五个重要的新特性,为开发者提供了详细的指南。 ... [详细]
  • index.js全部js兼容性处理。js内引入babelpolyfill全部js兼容性处理。babelpolyfillimportbabelpolyfill;constadd ... [详细]
  • 如何在PHP中正确配置错误显示功能
    在PHP中正确配置错误显示功能的方法如下:首先,定位并打开“php.ini”配置文件;接着,将“display_errors”参数设置为“On”;最后,在PHP代码文件的顶部添加 `ini_set('display_errors', '1');` 以确保错误信息能够被正确显示。此外,建议在开发环境中启用此功能,而在生产环境中禁用,以避免敏感信息泄露。 ... [详细]
author-avatar
午夜呻吟的诱惑
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有