Python爬虫实现双色球历史数据抓取

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

Python爬虫实现双色球历史数据抓取


前言

公司楼下恰巧有个中国福利彩票中心,跟同事每天中午吃完饭都会去买两注,在支持中国公益事业的同时,作着一夜暴富的梦想;概率什么的咱都懂,就是相信自己会暴富~~
自己按照生日、幸运数字等等,选了一注心仪的号码然后定投;定投一段时间以后,自然而然的想到了 这注双色球号码在历史开奖中是否中过奖;如何查询选择的双色球号码在历史期数中是否中过奖;于是赶紧百度一下,看看怎么查,没有就自己做一个呀;
果然搜到了一个 china-ssq(http://cp.china-ssq.net)电脑端、手机端浏览器都可访问,截图如下:
在这里插入图片描述


看了下网站的大体功能,提供双色球号码是否中过奖、大乐透号码是否中过奖,历史重复开奖记录等功能。网站介绍如下:

  1. 历史中奖查询:查询您心仪的号码(单式)是否已经在历史期数中开过奖,以供您参考
  2. 复式历史中奖查询:查询您所选的号码(复式)在历史开奖中,红球重复n球及以上的纪录
  3. 历史重复开奖记录查询:检索所有的历史开奖记录,查看是否有重复的开奖号码
  4. 中奖通知:在本站收藏您的幸运号码,我们将实时监控幸运号码的中奖情况,并第一时间通知到您

具体不知道这个网站开了多久,作者是否已经盈利了。不管三七二十一,我也决定用python实现一个。

一、用python抓取每天的开奖数据

代码如下(示例):

import requests
from bs4 import BeautifulSoup
import os

def get_data(url):
    response = requests.get(url)
    return response.text

def parse_data(html):
    soup = BeautifulSoup(html, 'html.parser')
    list = soup.select('div.ball_box01 ul li')
    ball = [li.string for li in list]
    return ball

def write_to_csv(page, ball):
    with open('双色球开奖结果.csv', 'a', encoding='utf_8_sig') as f:
        f.write(f'第{page}期,{",".join(ball)}\n')

def turn_page():
    url = "http://kaijiang.500.com/ssq.shtml"
    html = get_data(url)
    soup = BeautifulSoup(html, 'html.parser')
    pageList = soup.select("div.iSelectList a")
    for p in pageList:
        url = p['href']       # 提取链接
        page = p.string       # 提取字符串
        download(url, page)

def download(url, page):
    html = get_data(url)
    ball = parse_data(html)
    write_to_csv(page, ball)
    print(f"第{page}期开奖结果录入完成")

def main():
    if os.path.exists('双色球开奖结果.csv'):
        os.remove('双色球开奖结果.csv')
    turn_page()

if __name__ == '__main__':
    main()

二、接口开发

传参自己心仪的双色球号码,然后去所有期次中撞库
代码如下(示例):

@RequestMapping(value ="/duotoneLottery/query",method = RequestMethod.GET)
    public List<DuotoneLotteryHistory> getDuotoneLotteriesByList(@RequestParam(value = "blue", required = false) Integer 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);
        DuotoneLotteryHistory duotoneLotteryQO = new DuotoneLotteryHistory();
        duotoneLotteryQO.setRed1(balls.get(0));
        duotoneLotteryQO.setRed2(balls.get(1));
        duotoneLotteryQO.setRed3(balls.get(2));
        duotoneLotteryQO.setRed4(balls.get(3));
        duotoneLotteryQO.setRed5(balls.get(4));
        duotoneLotteryQO.setRed6(balls.get(5));
        duotoneLotteryQO.setBlue(blue);
        QueryWrapper<DuotoneLotteryHistory> wrapper = new QueryWrapper<>(duotoneLotteryQO);
        List<DuotoneLotteryHistory> duotoneLotteryHistories = duotoneLotteryHistoryService.list(wrapper);
        logger.info("result size: " + duotoneLotteryHistories.size());
        String totalTime = DateUtils.getFriendlyTimeDiff(startTime, System.currentTimeMillis());
        logger.info("end totalTime: " + totalTime);
        return duotoneLotteryHistories;
    }

总结

有了所有期次数据后,就可以进行数据分析挖掘,开发各种有意思的功能;
最后,希望大家支持中国公益彩票,祝各位早日中得大奖~实现财富自由!

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python语言可以利用标签实现分类任务。分类任务是机器学习领域中的一种常见任务,其目标是将数据集中的样本划分为不同的类别,以便对未知样本进行分类。 在Python中,我们可以使用一些机器学习库来实现分类任务,例如scikit-learn、TensorFlow和PyTorch等。这些库提供了丰富的分类算法和工具,方便用户进行数据预处理、特征提取、模型训练和预测等步骤。 首先,我们需要加载数据集并进行预处理。Python提供了各种库和工具,如Pandas和NumPy,可以方便地处理和分析数据。可以使用Pandas库读取数据,使用NumPy库进行数值计算和数据处理。 接下来,我们需要选择合适的分类算法。常见的分类算法包括决策树、支持向量机、朴素贝叶斯等。scikit-learn库提供了这些经典算法的实现。我们可以使用库提供的API创建并训练分类模型。 在训练过程中,我们可以利用标签来指导模型学习样本之间的差异和相似性。标签是训练样本所属类别的依据,模型通过学习样本的特征与标签之间的关系来进行分类预测。 最后,我们可以利用训练好的模型对新的样本进行分类预测。通过提取新样本的特征并输入到训练好的模型中,模型会根据训练数据中学习到的关系来进行分类预测。 总之,Python可以利用标签来指导分类任务的实现。通过选择合适的机器学习库和分类算法,加载和处理数据,训练和使用模型,我们可以在Python实现有效的分类任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值