工具分享01 | Python福彩双色球数据爬取+分析工具
- GUI工具
- 2025-07-05
- 939热度
- 0评论
大家好,我是欧K~
运行界面:

1. 运行流程
1.1 打开工具,设置历史期数

1.2 点击爬取数据(过程需要保持联网)

1.3 爬取数据完成

1.4 分析数据(未爬取数据时,按钮灰选,不可操作)

1.5 导出数据

1.6 数据表

2. 绘图
2.1 框架结构布局
def create_main_frames(self):
"""创建主框架结构"""
# 顶部控制区域
self.top_frame = tk.Frame(self.root, padx=10, pady=10)
self.top_frame.grid(row=0, column=0, columnspan=2, sticky="nsew")
# 顶部区域内部布局
self.params_frame = tk.Frame(self.top_frame)
self.params_frame.pack(side=tk.LEFT, fill=tk.BOTH, expand=True)
self.describe_frame = tk.Frame(self.top_frame, bg='white')
self.describe_frame.pack(side=tk.RIGHT, fill=tk.BOTH, expand=True)
# 底部控制区域
self.bottom_frame = tk.Frame(self.root, padx=10, pady=10)
self.bottom_frame.grid(row=1, column=0, columnspan=2, sticky="nsew")
# 底部区域内部布局
self.data_frame = tk.Frame(self.bottom_frame)
self.data_frame.grid(row=0, column=0, sticky="nsew")
self.analysis_frame = tk.Frame(self.bottom_frame)
self.analysis_frame.grid(row=0, column=1, sticky="nsew")
# 设置底部框架的列权重
self.bottom_frame.grid_columnconfigure(0, weight=1)
self.bottom_frame.grid_columnconfigure(1, weight=1)
self.bottom_frame.grid_rowconfigure(0, weight=1)
2.2 添加菜单
def create_menu(self):
"""创建菜单栏"""
mainmenu = Menu(self.root)
# 帮助菜单
aboutmenu = tk.Menu(mainmenu, tearoff=False)
aboutmenu.add_command(label="联系作者", command=self.about_command)
mainmenu.add_cascade(label="帮助", menu=aboutmenu)
2.3 添加控件
def add_controls(self):
"""添加各种控件"""
# 添加说明文本
self.add_description()
# 添加参数控件
self.add_parameter_controls()
# 添加数据显示区域
self.add_data_display()
# 添加数据显示区域
self.add_analysis_display()
2.4 添加数据展示
def add_data_display(self):
"""添加数据显示区域"""
tk.Label(self.data_frame, text='历史数据展示: ').grid(row=0, column=0)
# 添加滚动条
scrollbar = tk.Scrollbar(self.data_frame)
scrollbar.grid(row=1, column=1, sticky='ns')
self.data_text = tk.Text(
self.data_frame,
font=self.font_12,
yscrollcommand=scrollbar.set,
wrap=tk.WORD,
padx=5,
pady=5
)
2.4 导出数据
def export_data(self):
"""导出数据到Excel"""
def get_column_letter(n):
letter = ''
while n > 0:
n, remainder = divmod(n - 1, 26)
letter = chr(65 + remainder) + letter
return letter
if len(self.data_dict) == 0:
messagebox.showinfo("提示", "请先获取数据!")
else:
file_path = 'cp.xlsx'
if os.path.exists(file_path):
workbook = load_workbook(file_path)
sheet = workbook.active
sheet.delete_rows(1, sheet.max_row)
else:
workbook = Workbook()
sheet = workbook.active