持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第3天,点击查看活动详情
最近再做一个有意思的深度学习回归实验,具体为:利用python爬取近20年的双色球数据号码,通过之前的数据为样本,利用下一年的数据作为标签,通过神经网络强大的非线性回归能力进行训练,最后预测出最新一期的数据号码,一方面可以通过这个学习整个神经网络的训练预测流程,一方面也可以满足自己好奇心,说不定就可以躺平了呢?哈哈啊哈,废话不多说,先爬取数据!
爬取数据直接上代码:
import requests, bs4
import os, time
import operator
from itertools import combinations, permutations
import torch
class DoubleColorBall(object):
def __init__(self):
self.balls = {}
self.baseUrl = 'http://tubiao.zhcw.com/tubiao/ssqNew/ssqJsp/ssqZongHeFengBuTuAsc.jsp'
self.dataFile = './balls_data3.txt'
def getHtml(self, url):
headers = {
'Referer': 'http://tubiao.zhcw.com/tubiao/ssqNew/ssqInc/ssqZongHeFengBuTuAsckj_year=2016.html',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
}
self.session = requests.Session()
response = self.session.get(url, headers=headers)
return response.text
def getBall(self):
for year in range(2003, 2022):
url = self.baseUrl + '?kj_year=%s' % (year,)
print(url)
html = self.getHtml(url)
self.bs = bs4.BeautifulSoup(html, 'html.parser')
if self.bs:
data = self.bs.find_all(class_='hgt')
self.parseBall(data)
def parseBall(self, data):
self.balls = {}
for row in data:
if not isinstance(row, bs4.element.Tag):
continue
center = row.find(class_="qh7").string.strip()
print(center)
if center.startswith("模拟"):
break
redBalls = row.find_all(class_="redqiu")
blueBall = row.find(class_="blueqiu3").string.strip()
self.balls[center] = [r.string for r in redBalls] + [blueBall]
self.saveBall(self.balls)
def saveBall(self, data):
with open(self.dataFile, 'a+') as f:
for r in sorted(data, reverse=False): #降序
# for r in sorted(data, reverse=True): #升序
f.write(str(r) + ' ' + ' '.join(data[r]) + '\n')
if __name__ == '__main__':
ball = DoubleColorBall()
ball.getBall()
想爬取不同年限的数据,可以在上边修改代码即可~ 爬取之后的数据是以txt格式文件进行存储的,读取数据也是txt的格式。爬取之后就要进行预训练 的操作,把数据转化为网络可以识别的形式。
如果想要了解爬完数据之后的数据预处理操作步骤,可以参考我的这篇博客:
利用python对得到的双色球数据预处理_心之所向521的博客-CSDN博客
加油!