当前位置: 首页 > news >正文

Java实现大乐透历史是否中奖查询

Java实现大乐透历史是否中奖查询

在一些问答里,很多彩友都在问:如何查看自己的大乐透号码在历史期次中有没有中过奖?作为开发者兼彩友,这个问题就简单了,决定解决一下这个问题,先上结果: 大乐透历史是否中奖查询网站

要实现这个功能,关键点如下:

  1. 收集大乐透历史所有数据,并自动接收增量期次数据
  2. 做一个接口,传参为大乐透号码,单式、复式、胆拖,然后后台接收这个号码以后,与历史每一期的数据进行对比,查看是否中奖
  3. 做一个前端展示页面,允许用户输入号码,点击查询按钮,调用2的接口,展示返回结果

采用Springboot+Freemarker引擎实现

1. 收集大乐透历史所有数据

采取java jsoup爬虫方式,示例:


public class LotteryCrawler {public static void main(String[] args) {String url = "http://kaijiang.500.com/dlt.shtml"; // 大乐透开奖结果页面try {crawlLotteryData(url);} catch (IOException e) {e.printStackTrace();}}public static void crawlLotteryData(String url) throws IOException {Document doc = Jsoup.connect(url).get();Elements pageLinks = doc.select("div.iSelectList a"); // 根据实际页面结构调整选择器Path csvFilePath = Paths.get("大乐透开奖结果.csv");if (Files.exists(csvFilePath)) {Files.delete(csvFilePath);}List<String> csvHeader = new ArrayList<>();csvHeader.add("期号,红球1,红球2,红球3,红球4,红球5,蓝球1,蓝球2");Files.write(csvFilePath, csvHeader, java.nio.charset.StandardCharsets.UTF_8);for (Element link : pageLinks) {String pageUrl = link.attr("href");String period = link.text();crawlLotteryPeriodData(pageUrl, period, csvFilePath);}}public static void crawlLotteryPeriodData(String url, String period, Path csvFilePath) throws IOException {Document periodDoc = Jsoup.connect(url).get();Elements balls = periodDoc.select("div.ball_box01 ul li"); // 根据实际页面结构调整选择器List<String> dataRow = new ArrayList<>();dataRow.add(period);for (Element ball : balls) {dataRow.add(ball.text());}String dataLine = String.join(",", dataRow);Files.appendString(csvFilePath, dataLine + "\n");System.out.println("第" + period + "期开奖结果录入完成");}
}

2. 查询接口

编写REST服务接口,示例:

    //查看大乐透单期是否中奖@RequestMapping(value ="/dlt/query",method = RequestMethod.GET)public List<DltLotteryHistory> getDltLotteriesByList(@RequestParam(value = "blue") String blue,@RequestParam(value = "red") String red){long startTime = System.currentTimeMillis();logger.info("begin query, blue: " + blue + ", red: " + red);List<String> ballList = Arrays.asList(red.split(","));List<Integer> balls = ballList.stream().map(Integer::valueOf).collect(Collectors.toList());Collections.sort(balls);List<String> blueList = Arrays.asList(blue.split(","));List<Integer> blues = blueList.stream().map(Integer::valueOf).collect(Collectors.toList());Collections.sort(blues);DltLotteryHistory dltLotteryQO = new DltLotteryHistory();dltLotteryQO.setRed1(balls.get(0));dltLotteryQO.setRed2(balls.get(1));dltLotteryQO.setRed3(balls.get(2));dltLotteryQO.setRed4(balls.get(3));dltLotteryQO.setRed5(balls.get(4));dltLotteryQO.setBlue1(blues.get(0));dltLotteryQO.setBlue2(blues.get(1));QueryWrapper<DltLotteryHistory> wrapper = new QueryWrapper<>(dltLotteryQO);List<DltLotteryHistory> dltLotteryHistories = dltLotteryHistoryService.list(wrapper);logger.info("result size: " + dltLotteryHistories.size());String totalTime = DateUtils.getFriendlyTimeDiff(startTime, System.currentTimeMillis());logger.info("end totalTime: " + totalTime);return dltLotteryHistories;}

3. 前端


<!--begin header-->
<header class="header"><#include "../../pc/public/header.html">
</header>
<!--end header--><!--begin banner-->
<div class="banner mt20"></div>
<!--end banner--><div class="container fix mt20"><!--begin rightBar--><div class="rightBar"><#include "../../pc/public/dltrightbar.html"></div><!--end rightBar--><div class="content-body"><div class="filter filter-body"><div class="head-bar"><#include "../../pc/public/dlt-header-bar.html"></div><div class="panel bbd"><div class="desc">大乐透历史中奖查询:将查询您输入的大乐透号码(单式),在历史期数中是否已经中过奖,供您参考。<br/>若中过,将显示对应的开奖记录;若未中过奖,将显示 ‘未出现在历史中奖纪录中’</div><div class="red-ball"><p>红球区</p> --- 选择5个</div><div class="red-ball-list"><ul class="clearfix"><li><em>01</em></li><li><em>02</em></li><li><em>03</em></li><li><em>04</em></li><li><em>05</em></li><li><em>06</em></li><li><em>07</em></li><li><em>08</em></li><li><em>09</em></li><li><em>10</em></li><li><em>11</em></li><li><em>12</em></li><li><em>13</em></li><li><em>14</em></li><li><em>15</em></li><li><em>16</em></li><li><em>17</em></li><li><em>18</em></li><li><em>19</em></li><li><em>20</em></li><li><em>21</em></li><li><em>22</em></li><li><em>23</em></li><li><em>24</em></li><li><em>25</em></li><li><em>26</em></li><li><em>27</em></li><li><em>28</em></li><li><em>29</em></li><li><em>30</em></li><li><em>31</em></li><li><em>32</em></li><li><em>33</em></li><li><em>34</em></li><li><em>35</em></li></ul></div><div class="blue-ball"><p>蓝球区</p> --- 选择2个</div><div class="blue-ball-list"><ul class="clearfix"><li><em>01</em></li><li><em>02</em></li><li><em>03</em></li><li><em>04</em></li><li><em>05</em></li><li><em>06</em></li><li><em>07</em></li><li><em>08</em></li><li><em>09</em></li><li><em>10</em></li><li><em>11</em></li><li><em>12</em></li></ul></div><div class="sel-num"><span>您当前选了 <b class="c-red">0</b> 个红球 <b class="c-blue">0</b> 个蓝球</span><a href="#" class="clean-btn">清空上方选号</a></div><button type="button" class="btn select-ok-btn">查询</button></div><div id="filterResult" ></div><div class="resing" style="display:none"><img src="/images/loading.gif"></div><div class="res" style="display:none">共匹配到&nbsp;<p class="total"></p>&nbsp;条记录</div><div class="res0" style="display:none">未出现在历史中奖纪录中!</div><div class="filter-list" id="filterList"></div></div></div></div>

121

至此,查询大乐透号码在历史期次中是否中过奖的功能就开发完了,前往体验: 大乐透历史是否中奖查询网站

http://www.rkmt.cn/news/10640.html

相关文章:

  • HTTP Request Blocker的下载与使用 - 实践
  • NeurIPS 2025 spotlight |FSDrive 自动驾驶最新VLA+世界模型 - 详解
  • 主要测试的测试用例
  • TensorFlow 和 PyTorch两大深度学习框架训练素材,并协作一个电商推荐系统
  • Memento:基于记忆无需微调即可让大语言模型智能体持续学习的框架
  • Java 与物联网(IoT):边缘计算与智能终端应用
  • AI 落地应用最新工具集
  • JAVA的计算方式
  • 线性结构常见应用之栈[基于郝斌课程]
  • go的泛型
  • 【汽车电子】汽车功能安全标准 ISO 26262
  • 02020405 EF Core基础05-EF Core反向工程、EF Core和ADO.NET Core的联系、EF Core无法做到的事情
  • 在CodeBolcks下wxSmith的C++编程教程——使用菜单和组件
  • jpegdump
  • 一个基于 .NET 开源、简易、轻量级的进销存管理系统 - 教程
  • Nginx 部署及配置
  • vite静态资源处理
  • SerpApi:一站式搜索引擎数据抓取API完全指南
  • 【Rust管理MySql】Actix Web 框架结合 MySQL 数据库进行交互
  • 审美积累 | 这样的科技网站怎么做?
  • css 使用记录 随笔
  • 【OI 档案-2025】CSP 赛前集训记(初赛后+复赛)
  • Git 从零到一:以 Gitee 为例的实战与可视化指南
  • 前沿速览:TrafficVLM、DeepSeek-Terminus、Qwen3-Omni、蚂蚁百灵、Wan2.2-Animate、Qianfan-VL
  • 从3亿到48亿:NuGet周下载量跃迁背后的.NET生态演进与未来挑战(2019-2025)
  • ReLU函数及它的导数
  • 使用Claude代码子代理生成项目特定提交消息的技术实践
  • 走迷宫(BFS)
  • MyBatis分页的原理和分页插件的原理是什么
  • 旋转图像-leetcode