大乐透分析软件

2023-11-11

大乐透分析软件

1、使用python从网站中爬取所有的大乐透中奖号码

2、使用c++分析红球、蓝球、组合重复出现次数

3、输入红球、蓝球判断历史中奖次数和出现次数

python爬取代码:

import os
import re
import time
import openpyxl
import requests
from requests.exceptions import RequestException
from lxml import etree
root = '/root/dlt/' 
count = 0
qishus = []
reds = []
blues = []
def get_page(url):
    try:
        headers = {
            'user-agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Mobile Safari/537.36',
            'accept-language': 'zh-CN,zh;q=0.9',
            'cache-control': 'max-age=0',
            'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8'
        }
        #kf = {
        #    'user-agent': 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.7 (KHTML, like Gecko) Ubuntu/11.04 Chromium/16.0.912.77 Chrome/16.0.912.77 Safari/535.7'}
        #r = requests.get(url, kf, timeout=30)
        #r.raise_for_status()
        #r.encoding = 'UTF-8'
        #html = r.text
        #return html
        response = requests.get(url=url,headers=headers)
        # 更改编码方式,否则会出现乱码的情况
        response.encoding = "utf-8"
        if response.status_code == 200:
            return response.text
        return None
    except RequestException:
        return None
def parse_page(html):
    try:
        #red_list = re.findall(r'<span class="ball ball-red">.*?</span<span class="ball ball-red">.*?</span><span class="ball ball-red">.*?</span><span class="ball ball-red">.*?</span><span class="ball ball-red">.*?</span>', html)
        #blue_list = re.findall(r'<span class="ball ball-blue">.*?</span><span class="ball ball-blue">.*?</span>', html)
        #
        #time.sleep(1)
        ## 提取日期时间
        #for i in red_list:
        #    data_liat = i.split(',')[-1]
        #    d = re.sub(r'<span.*?>', ' ', data_liat)
        #    a = re.sub(r'</span>', '', d)
        #    reds.append(a)
        ## 提取 中奖号码
        #for i in blue_list:
        #    ui = i.split(',')[-1]
        #    u = re.sub(r'<span.*?>', ' ', ui)
        #    o = re.sub(r'</span>', '', u)
        #    blues.append(o)
        global count
        count+=1
        res = etree.HTML(html)
        red = res.xpath('//*[@class="ball ball-red"]//text()')
        reds.append(" ".join(red))
        blue = res.xpath('//*[@class="ball ball-blue"]//text()')
        blues.append(" ".join(blue))
        print(red+blue)
    except Exception as e:
        pass
        
def write_excel(qishu, red, blue):
    workbook = openpyxl.Workbook()
    sheet = workbook.active
    sheet.title = '2007'
    sheet.cell(1, 1, '期数')
    sheet.cell(1, 2, '红球')
    sheet.cell(1, 3, '蓝球')

    # 保存的数据需要是字典形式
    for x, m in enumerate(qishu):
        sheet.cell(x + 2, 1, m)
    for x, m in enumerate(red):
        sheet.cell(x + 2, 2, m)
    for x, m in enumerate(blue):
        sheet.cell(x + 2, 3, m)

    workbook.save(root + '2007-2023.xlsx')  # 保存工作簿

    return workbook.save(root + '2007-2023.xlsx')  # 保存工作簿
def main(num):
    url = 'https://www.55125.cn/kaijiang/dlt/{}.htm'.format(str(num))
    qishus.append(num)
    html = get_page(url)
    parse_page(html)
if __name__ == '__main__':
    #maxRange={'2007':93}
    maxRange = {'2007':93,'2008':154,'2009':153,'2010':153,
        '2011':154,'2012':154,'2013':153,'2014':154,'2015':153,
        '2016':154,'2017':153,'2018':154,'2019':150,'2020':134,
        '2021':150,'2022':150,'2023':8
        }
    for key,value in maxRange.items():
        for val in range(1,value+1):
            sVal="%03d"%val
            num = key+sVal
            main(num)
    write_excel(qishu=qishus,red=reds,blue=blues)
    #for num in range(2017001,2017154):
    #    main(num)
    #for num in range(18001, 18140):
    #    main(num)
    print("大乐透爬取结束...")
    print("爬取的数目为:"+str(count))

c++分析工具

// analdlt.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <Windows.h>
#include "libxl.h"
#include <string>
#include <vector>
#include <map>
using namespace libxl;

std::string UnicodeToAnsi(const wchar_t* szStr)
{
	int nLen = WideCharToMultiByte(CP_ACP, 0, szStr, -1, NULL, 0, NULL, NULL);
	if (nLen == 0)
	{
		return "";
	}
	char* pResult = new char[nLen];
	WideCharToMultiByte(CP_ACP, 0, szStr, -1, pResult, nLen, NULL, NULL);
	std::string retStr = pResult;
	if (pResult) delete[] pResult;
	return retStr;
}

void getExcelCellString(Sheet* sheet, int row, int col, std::string& value)
{
	if (sheet->cellType(row, col) == CELLTYPE_STRING)
	{
		value = UnicodeToAnsi(sheet->readStr(row, col));
	}
	else if (sheet->cellType(row, col) == CELLTYPE_NUMBER)
	{
		value = std::to_string((LONG64)sheet->readNum(row, col));
	}
}

std::vector<std::string> splitStr(const std::string& str)
{
	std::vector<std::string> ret;
	char *s = (char*)str.c_str();
	const char *d = " ";
	char *p;
	p = strtok(s, d);
	while (p)
	{
		ret.push_back(p);
		p = strtok(NULL, d);
	}
	return ret;
}

uint64_t strTouint64(const std::string& str)
{
	std::vector<std::string> splitStr_ = splitStr(str);
	uint64_t ret = 0;
	for (int i = 0; i < splitStr_.size(); ++i)
	{
		int rm = std::atoi(splitStr_[i].c_str());
		if (rm == 0)
			break;
		uint64_t tmp = 1;
		tmp <<= rm;
		ret |= tmp;
		//ret = ret | tmp;
	}
	return ret;
}

uint16_t strTouint16(const std::string& str)
{
	std::vector<std::string> splitStr_ = splitStr(str);
	uint16_t ret = 0;
	for (int i = 0; i < splitStr_.size(); ++i)
	{
		int rm = std::atoi(splitStr_[i].c_str());
		if (rm == 0)
			break;
		uint16_t tmp = 1;
		tmp <<= rm;
		ret |= tmp;
		//ret = ret | tmp;
	}
	return ret;
}

void initData(std::vector<uint64_t> &reds, std::vector<uint16_t> &blues, std::vector<uint64_t> &redblues)
{
	Book* book = xlCreateBook();
	if (!book)
	{
		return;
	}
	std::string excelPath = "E:\\2007-2023.xlsx";
	TCHAR path[1024];
#ifdef UNICODE
	MultiByteToWideChar(CP_ACP, 0, excelPath.c_str(), -1, path, 100);
#else
	strcpy(excelPath.c_str(), strUsr);
#endif

	if (!book->load(path))
	{
		book->release();
		book = xlCreateXMLBook();
		if (!book->load(path))
		{
			std::cout << book->errorMessage() << std::endl;
			return;
		}
	}

	book->setKey(L"EduAnalyze", L"windows-2929270505c6eb0c64ba6c6cafp8r7g0");

	size_t sheetIndex = 0;
	Sheet* sheet = book->getSheet(sheetIndex);
	if (sheet)
	{
		int firstRow = sheet->firstRow(); //有数据的第一行行号
		int lastRow = sheet->lastRow();//有数据的最后一行行号
		int firstCol = sheet->firstCol(); //有数据的第一列列号
		int lastCol = sheet->lastCol();   //有数据的最后一列列号

		for (size_t row = 1; row < lastRow; ++row)
		{
			int col = 0;
			std::string qishu;
			getExcelCellString(sheet, row, col++, qishu);
			std::string red;
			getExcelCellString(sheet, row, col++, red);
			uint64_t tmp = strTouint64(red);
			reds.push_back(tmp);
			std::string blue;
			getExcelCellString(sheet, row, col++, blue);
			uint16_t blueTmp = strTouint16(blue);
			blues.push_back(blueTmp);
			//uint64_t tmp = strTouint64(red);
			tmp <<= 12;
			tmp |= blueTmp;
			redblues.push_back(tmp);
		}
	}

	book->release();
}

std::string printTotal(uint64_t value)
{
	uint64_t val = value;
	std::string ret;
	std::string bret;
	std::string rret;
	for (int i = 1; i < 64; ++i)
	{
		val >>= 1;
		uint64_t tmp = 1;
		tmp &= val;
		if (i <= 12)
		{
			if (tmp)
			{
				bret += (std::to_string(i) + " ");
			}
		}
		else
		{
			if (tmp)
			{
				int t = i;
				t -= 12;
				rret += (std::to_string(t) + " ");
			}
		}
		
	}
	ret = rret + bret;
	return ret;
}

std::string printInt64(uint64_t value)
{
	uint64_t val = value;
	std::string ret;
	for (int i = 1; i < 64; ++i)
	{
		val >>= 1;
		uint64_t tmp = 1;
		tmp &= val;
		if (tmp)
		{
			ret += (std::to_string(i) + " ");
		}
	}
	return ret;
}

std::string printInt16(const uint16_t value)
{
	uint16_t val = value;
	std::string ret;
	for (int i = 1; i < 16; ++i)
	{
		val >>= 1;
		uint16_t tmp = 1;
		tmp &= val;
		if (tmp)
		{
			ret += (std::to_string(i) + " ");
		}
	}
	return ret;
}

std::map<uint16_t, int> getBlueTimes(std::vector<uint16_t> blues)
{
	std::map<uint16_t, int> ret;
	std::pair<std::map<uint16_t, int>::iterator, bool> r;
	for (int i = 0; i < blues.size(); ++i)
	{
		r = ret.insert({ blues[i], 1 });
		if (!r.second)
		{
			++ret[blues[i]];
		}
	}
	return ret;
}

std::map<uint64_t, int> getRedTimes(std::vector<uint64_t> reds)
{
	std::map<uint64_t, int> ret;
	std::pair<std::map<uint64_t, int>::iterator, bool> r;
	for (int i = 0; i < reds.size(); ++i)
	{
		r = ret.insert({ reds[i], 1 });
		if (!r.second)
		{
			++ret[reds[i]];
		}
	}
	return ret;
}

std::map<uint64_t, int> getTotalTimes(std::vector<uint64_t> redblues)
{
	std::map<uint64_t, int> ret;
	std::pair<std::map<uint64_t, int>::iterator, bool> r;
	for (int i = 0; i < redblues.size(); ++i)
	{
		r = ret.insert({ redblues[i], 1 });
		if (!r.second)
		{
			++ret[redblues[i]];
		}
	}
	return ret;
}

int main()
{
	std::vector<uint64_t> reds;
	std::vector<uint16_t> blues;
	std::vector<uint64_t> redblues;
	initData(reds, blues, redblues);
	auto ret = getBlueTimes(blues);
	for (auto it = ret.begin(); it != ret.end(); ++it)
	{
		printf("%s: %d\n", printInt16(it->first).c_str(), it->second);
	}
	printf("========================================\n");
	auto redRet = getRedTimes(reds);
	for (auto it = redRet.begin(); it != redRet.end(); ++it)
	{
		if (it->second > 1)
		{
			printf("%s: %d\n", printInt64(it->first).c_str(), it->second);
		}
	}
	printf("========================================\n");
	auto totalRet = getTotalTimes(redblues);
	for (auto it = totalRet.begin(); it != totalRet.end(); ++it)
	{
		if (it->second > 1)
		{
			printf("%s: %d\n", printTotal(it->first).c_str(), it->second);
		}
	}
	printf("========================================\n");
	while (1)
	{
		uint64_t rs = 0;
		uint16_t bs = 0;
		uint64_t ts = 0;
		printf("请输入5位红球数[1-35 不可重复]: ");
		for (int i = 0; i < 5; ++i)
		{
			uint64_t val = 0;
			scanf("%lu", &val);
			uint64_t tmp = 1;
			tmp <<= val;
			rs |= tmp;
		}
		printf("请输入2位蓝球数[1-12 不可重复]: ");
		for (int i = 0; i < 2; ++i)
		{
			uint16_t val = 0;
			scanf("%u", &val);
			uint16_t tmp = 1;
			tmp <<= val;
			bs |= tmp;
		}

		ts = rs;
		ts <<= 12;
		ts |= bs;
		auto bit = ret.find(bs);
		if (bit != ret.end())
		{
			printf("当前蓝球:%s 已出现:%d次\n", printInt16(bs).c_str(), bit->second);
		}
		else
		{
			printf("当前蓝球:%s从未出现\n", printInt16(bs).c_str());
		}
		auto rit = redRet.find(rs);
		if (rit != redRet.end())
		{
			printf("当前红球:%s 已出现:%d次\n", printInt64(rs).c_str(), rit->second);
		}
		else
		{
			printf("当前红球:%s从未出现\n", printInt64(rs).c_str());
		}
		auto tit = totalRet.find(ts);
		if (tit != totalRet.end())
		{
			printf("当前组合:%s 已出现:%d次\n", printTotal(ts).c_str(), tit->second);
		}
		else
		{
			printf("当前组合:%s从未出现\n", printTotal(ts).c_str());
		}

	}
	
    std::cout << "Hello World!\n";
	return 0;
}

效果展示:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大乐透分析软件 的相关文章

  • Django 1.6:清除一张表中的数据

    我有一个名为 UGC 的表 想要清除该表中的所有数据 我不想重置整个应用程序 这也会删除所有其他模型中的所有数据 是否可以只清除一个模型 我还为我的应用程序配置了 South 如果这有帮助的话 你可以使用原始 SQL https docs
  • pandas 读取列中带有额外逗号的 csv

    我正在阅读一个基本的 csv 文件 其中各列用逗号分隔 列名称如下 userid username body 但是 正文列是一个可能包含逗号的字符串 显然这会导致一个问题 pandas 会抛出一个错误 CParserError Error
  • 查找数据集中的异常值

    我有一个 python 脚本 它创建服务器正常运行时间和性能数据列表的列表 其中每个子列表 或 行 包含特定集群的统计信息 例如 格式良好的它看起来像这样 Cluster Availability Requests Sec Errors S
  • 为什么Flask后台线程获取错误的数据库信息?

    为了将实时数据库信息推送到客户端 我在服务器端使用flask socketio 通过使用websocket将所有实时数据库信息推送到客户端 我的视图文件有一个片段 from models import Host from flask soc
  • python 函数 *args 和 **kwargs 以及其他指定的关键字参数

    我有一个 Python 类 它的方法应该以这种方式接受参数和关键字参数 class plot def init self x y self x x self y y def set axis self args xlabel x ylabe
  • 并行执行按位运算的代码

    我有这段代码 通过将该 AU 矩阵的每个字节 8 个元素打包到 A 中来减少内存消耗 从而使 100k 200k 矩阵占用更少的空间 正如您所期望的 这段代码需要永远运行 我也计划将行数增加到 200k 我正在一个非常强大的实例 CPU 和
  • 映射 2 个数据帧并替换目标数据帧中匹配值的标头

    我有一个数据框 df1 SAP Name SAP Class SAP Sec Avi 5 C Rison 6 A Slesh 7 B San 8 C Sud 7 B df2 Name Fi Class Avi 5 Rison 6 Slesh
  • Python 中没有名称属性的表单提交

    背景 在Python中使用urllib和urllib2 您可以进行表单提交 您首先创建一个字典 formdictionary search stackoverflow 然后使用 urllib 的 urlencode 方法来转换这个字典 pa
  • 将 postgres 连接到 django 时遇到问题

    以下文档来自Django Postgres 文档 https docs djangoproject com en 4 1 ref databases postgresql notes我添加到我的settings py 在我设置的设置中 DA
  • [Python]比较两个 zip 文件的函数,一个位于 FTP 目录中,另一个位于我的本地计算机上

    我在创建比较两个 zip 文件的函数时遇到问题 如果它们相同 而不仅仅是名称相同 这是我的代码示例 def validate zip files self host 192 168 0 1 port 2323 username 123 pa
  • 如何向 Jupyter (ipython) 笔记本自动添加扩展?

    我已经安装了扩展 calico document tools 我可以使用以下命令从 Jupyter 笔记本中加载它 javascript IPython load extensions calico document tools 如何为每个
  • 如何在我的 GUI 上绘图

    我正在设计一个 GUIPyQt当我单击一个按钮来绘制我创建的函数的数据图时 我需要显示一个 matplotlib pylab 窗口 它就像 Matlab 中使用的运行时 每次按下该按钮时 我都想将 matplotlib pylab 窗口保留
  • dask分布式内存错误

    在分布式作业上运行 Dask 时 我在调度程序上遇到以下错误 distributed core ERROR Traceback most recent call last File usr local lib python3 4 dist
  • python请求ssl握手失败

    每次我尝试这样做 requests get https url 我收到这条消息 import requests gt gt gt requests get https reviews gethuman com companies Trace
  • 抓取 Shopee API v4

    我有一个最终项目 其中我想要检索的数据是通过在shopee上抓取数据来获取的 但是当我在隐藏的API上抓取shopee时遇到问题 当我在Insomnia脚本上尝试时 脚本会运行 但是当我尝试时在本地或 google colab 脚本上 这是
  • RubyMine - 没有为项目配置 Ruby 解释器

    我进入 设置 Ruby SDK 和 Gems 然后选择C RailsInstaller Ruby1 9 3 bin ruby exe 它在右侧加载了一堆宝石 看起来它会起作用 我点击 确定 但仍然有糟糕的语法突出显示 并且它仍然认为它没有
  • 如何隐藏 Tkinter python Gui

    有人知道如何隐藏 python GUI Tkinter 我已经创建了键盘记录器 对于 GUI 我使用了 python 模块 Tkinter 我想添加名为 HIDE 的按钮 因此当用户单击它时 它将隐藏 GUI 当用户按下 CTRL E 之类
  • Python - 将列表作为参数传递给 SQL,以及更多变量

    我试图在 python 3 6 中将未知数量的参数传递给 SQL Server 这是我使用 pypyodbc 的代码 cursor cnxn cursor theargs 1033286869 1053474957 1063654630 1
  • 导入错误:无法导入名称

    我有一个名为 google translate python 的库 https github com terryyin google translate python https github com terryyin google tra
  • 如何限制单元测试的最大运行时间?

    我目前正在运行一些单元测试 这些测试可能需要很长时间才能失败或无限期地运行 在成功的测试运行中 它们总是会在一定的时间内完成 是否可以创建一个 pytest 单元测试 如果在一定时间内未完成 该测试就会失败 您可以安装 pytest tim

随机推荐

  • wasm + ffmpeg实现前端截取视频帧功能

    有没有那么一种可能 在前端页面处理音视频 例如用户选择一个视频 然后支持他设置视频的任意一帧作为封面 就不用把整一个视频上传到后端处理了 经过笔者的一番摸索 基本实现了这个功能 一个完整的demo ffmpeg wasm截取视频帧功能 支持
  • paddle-pytorch API对应表

    PyTorch API名称 对应Paddle API torch set default dtype paddle set default dtype torch get default dtype paddle get default d
  • linux下mysql-connector-c++连接远程服务器失败

    最近在将windows项目移植到linux下 碰到诸多问题 先谈mysql connector c 连接远程服务器失败问题 在windows下 sql Driver driver sql mysql get driver instance
  • 因果推理相关的图神经网络研究

    本文介绍两篇因果推理相关的图神经网络研究工作 一 OOD推荐系统下的因果表征学习 本文介绍了什么是推荐系统中的Out of Distribution OOD 问题 并从因果的角度提出了一种解决OOD问题的表示学习方式 文章链接 https
  • 关于xinput1_3.dll丢失的详细解决方法

    xinput1 3 dll是电脑文件中的dll文件 动态链接库文件 如果计算机中丢失了某个dll文件 可能会导致某些软件和游戏等程序无法正常启动运行 并且导致电脑系统弹窗报错 在我们打开软件或者游戏的时候 电脑提示xinput1 3 dll
  • Windows10下安装Linux子系统

    Windows10下安装Linux子系统 版本说明 版本 作者 日期 备注 0 1 ZY 2019 7 9 初稿 目录 文章目录 Windows10下安装Linux子系统 版本说明 目录 一 初衷 二 资料收集 三 官方安装说明 1 准备
  • 5.0结构型模式—概述

    结构型模式描述如何将类或对象按某种布局组成更大的结构 它分为类结构型模式和对象结构型模式 前者采用继承机制来组织接口和类 后者釆用组合或聚合来组合对象 由于组合关系或聚合关系比继承关系耦合度低 满足 合成复用原则 所以对象结构型模式比类结构
  • 国庆假期将至,拓世AI智能规划行程,让您轻松游遍全球热门景点!

    卡夫卡曾说 人不是活几年 几月 几天 几小时 而只活几个瞬间 亲赴一场与美景的邂逅 便是去找寻人生里的瞬间之美 转眼已是九月 正是人间好时节 挥别工作和生活的烦闷 奔向辽阔的天地中 即将到来的国庆长假 你需要来一场说走就走的旅行 将所有烦恼
  • 动态数据源配置druid+mybatis

    本方案不限数据库数量完全动态配置 支持不同的数据库部署在不同的服务器上 mybatis plus没测试 下个版本用oracle配的时候尝试plus 一 这次我们使用Mysql 本地现在有两个个数据库用于测试 如图 二 下一步我们看一下Dru
  • LintCode入门题目

    37 反转一个3位整数 反转一个只有3位数的整数 样例 样例 1 输入 number 123 输出 321 样例 2 输入 number 900 输出 9 注意事项 你可以假设输入一定是一个只有三位数的整数 这个整数大于等于100 小于10
  • 表空间的操作

    1 创建表空间 create tablespace tablespace name datafile filepath size filesize autoextend on next autosize maxsize filemaxsiz
  • rule34服务器不稳定,rule34网站

    rule34网站 内容精选 换一换 网站后台数据录入完成后 您需要为您的网站设置便于客户浏览和操作的前台显示界面 本章节主要通过已安装的网站模板指导您完成PC版 手机版网页的制作 以及网站数据的备份 已完成网站后台的设置 并且成功绑定域名
  • 用PyCharm打开已有代码

    一 代码的打开 1 在当前环境 打开新的项目 2 点open 打开文件存放的位置 3 trust Project 4 this window or new window 一般选this window 5 解决代码中的问题 1 一定要解决 2
  • python3 scrapy爬取微信公众号及历史信息V1.0

    环境 python3 scrapy 目的 写这篇文章主要是做一下纪念 毕竟是搞了快两天的东西了 今天加大了量 使用scrapy爬取100多个微信公众号 然后出现IP被封的情况下 当然了 这种情况并不是没有办法解决 只需要在scrapy中进行
  • Java SE学习笔记(五)——数组

    1 包装类 Wrapper Class 针对原生数据类型的包装 所有的包装类 8个 都位于java lang包下 对应8个包装类分别是 Byte Short Integer Long Float Double Character Boole
  • 如何设计一个“正确”的后端接口

    一个后端接口正常情况下会包含 接口地址url 接口的请求方式 get post 请求数据 相应数据 在此记录一下如何构建一个完整的后端接口的过程 无论一个简单还是复杂的接口 无论是对外开放的接口还是http接口 参数校验是比不可少的 因为调
  • 做web开发,怎么能不懂cookie、session和token呢?

    如果把人体比作一个web系统的话 cookie session和token就好像人体的经络和血管一样 而web系统中的数据 就好像人体的血液一样 血液依靠着血管在人体内流动 就如数据根据cookie和session机制在web系统中流动一样
  • 活动报名

    活动议程 日期 8月11日 周五 时间 主题 14 30 14 35 开场简介 吴琦 阿德莱德大学副教授 青源会会员 14 35 15 20 实际应用中的通用视觉与语言方法 聚焦于视觉与语言导航任务 乔滟媛 阿德莱德大学博士后研究员 15
  • vue_02_数据绑定

    1 单向数据绑定 语法 v bind href xxx 或简写为 href 特点 数据只能从 data 流向页面
  • 大乐透分析软件

    大乐透分析软件 1 使用python从网站中爬取所有的大乐透中奖号码 2 使用c 分析红球 蓝球 组合重复出现次数 3 输入红球 蓝球判断历史中奖次数和出现次数 python爬取代码 import os import re import t