Task:

1. 在福彩官网抓取所有的历史双色球数据。

2. 使用历史数据进行继续学习。

Part1 数据抓取

main.pyimport re

from bs4 import BeautifulSoup

import urllib2

from mylog import MyLog as mylog

from save2excel import SavaBallDate

class DoubleColorBallItem(object):

date = None

order = None

red1 = None

red2 = None

red3 = None

red4 = None

red5 = None

red6 = None

blue = None

money = None

firstPrize = None

secondPrize = None

class GetDoubleColorBallNumber(object):

'''这个类用于获取双色球中奖号码, 返回一个txt文件

'''

def __init__(self):

self.urls =

self.log = mylog()

self.getUrls()

self.items = self.spider(self.urls)

self.pipelines(self.items)

self.log.info('beging save data to excel \r\n')

SavaBallDate(self.items)

self.log.info('save data to excel end ...\r\n')

def getUrls(self):

'''获取数据来源网页

'''

URL = r'http://kaijiang.zhcw.com/zhcw/html/ssq/list_1.html'

htmlContent = self.getResponseContent(URL)

soup = BeautifulSoup(htmlContent, 'lxml')

tag = soup.find_all(re.compile('p'))[-1]

pages = tag.strong.get_text()

for i in xrange(1, int(pages)+1):

url = r'http://kaijiang.zhcw.com/zhcw/html/ssq/list_' + str(i) + '.html'

self.urls.append(url)

self.log.info(u'添加URL:%s 到URLS \r\n' %url)

def getResponseContent(self, url):

'''这里单独使用一个函数返回页面返回值,是为了后期方便的加入proxy和headers等

'''

try:

response = urllib2.urlopen(url.encode('utf8'))

except:

self.log.error(u'Python 返回URL:%s 数据失败 \r\n' %url)

else:

self.log.info(u'Python 返回URUL:%s 数据成功 \r\n' %url)

return response.read()

def spider(self,urls):

'''这个函数的作用是从获取的数据中过滤得到中奖信息

'''

items =

for url in urls:

htmlContent = self.getResponseContent(url)

soup = BeautifulSoup(htmlContent, 'lxml')

tags = soup.find_all('tr', attrs={})

for tag in tags:

if tag.find('em'):

item = DoubleColorBallItem()

tagTd = tag.find_all('td')

item.date = tagTd[0].get_text()

item.order = tagTd[1].get_text()

tagEm = tagTd[2].find_all('em')

item.red1 = tagEm[0].get_text()

item.red2 = tagEm[1].get_text()

item.red3 = tagEm[2].get_text()

item.red4 = tagEm[3].get_text()

item.red5 = tagEm[4].get_text()

item.red6 = tagEm[5].get_text()

item.blue = tagEm[6].get_text()

item.money = tagTd[3].find('strong').get_text()

item.firstPrize = tagTd[4].find('strong').get_text()

item.secondPrize = tagTd[5].find('strong').get_text()

items.append(item)

self.log.info(u'获取日期为:%s 的数据成功' %(item.date))

return items

def pipelines(self,items):

fileName = u'双色球.txt'.encode('GBK')

with open(fileName, 'w') as fp:

for item in items:

fp.write('%s %s \t %s %s %s %s %s %s %s \t %s \t %s %s \n'

%(item.date,item.order,item.red1,item.red2,item.red3,item.red4,item.red5,item.red6,item.blue,item.money,item.firstPrize,item.secondPrize))

self.log.info(u'将日期为:%s 的数据存入"%s"...' %(item.date, fileName.decode('GBK')))

if __name__ == '__main__':

GDCBN = GetDoubleColorBallNumber()

from mylog import MyLog as mylog

from save2excel import SavaBallDate

这两个模块四用来显示log和保存为excel数据。import logging

import getpass

import sys

#### 定义MyLog类

class MyLog(object):

#### 类MyLog的构造函数

def __init__(self):

self.user = getpass.getuser()

self.logger = logging.getLogger(self.user)

self.logger.setLevel(logging.DEBUG)

#### 日志文件名

self.logFile = sys.argv[0][0:-3] + '.log'

self.formatter = logging.Formatter('%(asctime)-12s %(levelname)-8s %(name)-10s %(message)-12s\r\n')

#### 日志显示到屏幕上并输出到日志文件内

self.logHand = logging.FileHandler(self.logFile, encoding='utf8')

self.logHand.setFormatter(self.formatter)

self.logHand.setLevel(logging.DEBUG)

self.logHandSt = logging.StreamHandler()

self.logHandSt.setFormatter(self.formatter)

self.logHandSt.setLevel(logging.DEBUG)

self.logger.addHandler(self.logHand)

self.logger.addHandler(self.logHandSt)

#### 日志的5个级别对应以下的5个函数

def debug(self,msg):

self.logger.debug(msg)

def info(self,msg):

self.logger.info(msg)

def warn(self,msg):

self.logger.warn(msg)

def error(self,msg):

self.logger.error(msg)

def critical(self,msg):

self.logger.critical(msg)

if __name__ == '__main__':

mylog = MyLog()

mylog.debug(u"I'm debug 测试中文")

mylog.info("I'm info")

mylog.warn("I'm warn")

mylog.error(u"I'm error 测试中文")

mylog.critical("I'm critical") import xlwt

class SavaBallDate(object):

def __init__(self, items):

self.items = items

self.run(self.items)

def run(self,items):

fileName = u'双色球.xls'.encode('GBK')

book = xlwt.Workbook(encoding='utf8')

sheet=book.add_sheet('ball', cell_overwrite_ok=True)

sheet.write(0, 0, u'开奖日期'.encode('utf8'))

sheet.write(0, 1, u'期号'.encode('utf8'))

sheet.write(0, 2, u'红1'.encode('utf8'))

sheet.write(0, 3, u'红2'.encode('utf8'))

sheet.write(0, 4, u'红3'.encode('utf8'))

sheet.write(0, 5, u'红4'.encode('utf8'))

sheet.write(0, 6, u'红5'.encode('utf8'))

sheet.write(0, 7, u'红6'.encode('utf8'))

sheet.write(0, 8, u'蓝'.encode('utf8'))

sheet.write(0, 9, u'销售金额'.encode('utf8'))

sheet.write(0, 10, u'一等奖'.encode('utf8'))

sheet.write(0, 11, u'二等奖'.encode('utf8'))

i = 1

while i <= len(items):

item = items[i-1]

sheet.write(i, 0, item.date)

sheet.write(i, 1, item.order)

sheet.write(i, 2, item.red1)

sheet.write(i, 3, item.red2)

sheet.write(i, 4, item.red3)

sheet.write(i, 5, item.red4)

sheet.write(i, 6, item.red5)

sheet.write(i, 7, item.red6)

sheet.write(i, 8, item.blue)

sheet.write(i, 9, item.money)

sheet.write(i, 10, item.firstPrize)

sheet.write(i, 11, item.secondPrize)

i += 1

book.save(fileName)

if __name__ == '__main__':

pass

运行脚本后,会在本地生成一个excel文件,保存为一下的格式:

第一步完成。

Part2 机器学习进行预测

2018-02-19

待续,后面继续更新

原文链接:

http://30daydo.com/article/277

python如何预测双色球信息_python预测下一期双色球号码【机器学习】相关推荐

  1. sklearn回归 预测下一期双色球

    sklearn回归 预测下一期双色球 最近接到预测双色球的任务,因为随机性过大,尝试搭建DNN RNN LSTM 都有较大的LOSS(随机性太强).故用SK里自带的回归来预测. 首先我们爬取数据 im ...

  2. 利用python批量查询企业信息_python实现批量获取指定文件夹下的所有文件的厂商信息...

    本文实例讲述了python实现批量获取指定文件夹下的所有文件的厂商信息的方法.分享给大家供大家参考.具体如下: 功能代码如下: import os, string, shutil,re import ...

  3. python爬取控制台信息_python爬虫实战之爬取智联职位信息和博客文章信息

    1.python爬取招聘信息 简单爬取智联招聘职位信息 # !/usr/bin/env python # -*-coding:utf-8-*- """ @Author  ...

  4. python预测彩票模型_python预测下一期双色球号码【机器学习】

    Task: 1. 在福彩官网抓取所有的历史双色球数据. 2. 使用历史数据进行继续学习. Part1 数据抓取 main.pyimport re from bs4 import BeautifulSo ...

  5. python提取网页表格信息_python 提取网页表格数据库数据库

    python开源工具列表[持续更新] 以下是个人在工作中整理的一些python wheel,供参考.这个列表包含与网页抓取和数据处理的Python库 网络 通用urllib -网络库(stdlib). ...

  6. python .db 查看表信息_python查询excel数据库表

    Python数据持久化-小测验 2018年7月13日考试 1.Python读写csv文件 现有如下图1所示的data.csv文件数据,请使用python读取该csv文件数据,并添加一条记录后输出如图2 ...

  7. python爬取商品信息_Python基于BeautifulSoup爬取京东商品信息

    今天小编利用美丽的汤来为大家演示一下如何实现京东商品信息的精准匹配~~ HTML文件其实就是由一组尖括号构成的标签组织起来的,每一对尖括号形式一个标签,标签之间存在上下关系,形成标签树:因此可以说Be ...

  8. 利用python爬取租房信息_Python爬虫实战(1)-爬取“房天下”租房信息(超详细)

    #前言html 先看爬到的信息:python 今天主要用到了两个库:Requests和BeautifulSoup.因此我先简单的说一下这两个库的用法,提到的都是此文须要用到的.编程 #Requests ...

  9. python爬取酒店信息_Python 爬取美團酒店信息

    事由:近期和朋友聊天,聊到黃山酒店事情,需要了解一下黃山的酒店情況,然后就想着用python 爬一些數據出來,做個參考 主要思路:通過查找,基本思路清晰,目標明確,僅僅爬取美團莫一地區的酒店信息,不過 ...

  10. python爬虫抓取信息_python爬虫爬取网上药品信息并且存入数据库

    我最近在学习python爬虫,然后正好碰上数据库课设,我就选了一个连锁药店的,所以就把网上的药品信息爬取了下来. 1,首先分析网页 2,我想要的是评论数比较多的,毕竟好东西大概是买的人多才好.然后你会 ...

最新文章

  1. Junit 与 powermock 结合执行过程源码阅读
  2. Effective Dart 文档注释在Flutter项目中的实践
  3. linux qt getpid,[QTA] Android 动态注入原理分析
  4. SpringBoot入门-自动配置原理
  5. 警方通报6少年深夜洗劫小米专卖店
  6. POJ2976-Dropping tests-01分数规划
  7. Ubuntu里面vi编辑器在编辑文本时 如何在所有行行首或行尾插入字符
  8. AJAX培训第二讲:使用AJAX框架(下)
  9. java连接数据库实现基本的增删改查
  10. aceadmin1.4框架treeview多选改造
  11. 自建ngrok私服, 总是提示 Tunnel xxx.ngrok.mydomain.com not found
  12. opencv项目实践二(银行卡卡号识别)
  13. Cent os 安装 JDK , 配置JAVA_HOME
  14. 小白css基础学习记之精灵图
  15. unity python热更新_Unity热更新介绍和测试方法
  16. tomcat Error :but has failed to stop it,This is very likely to create a memory leak.
  17. 软件开发搞定计算机组成原理:计算篇
  18. Qt 中messageBox使用
  19. WPF优化DrawingContext.DrawLine
  20. 阮一峰 React Router 教程

热门文章

  1. 【图像处理基础】基于matlab图像SRGB+Adobe RGB伽马校正【含Matlab源码 255期】
  2. 【图像分割】基于matlab分水岭算法图像分割【含Matlab源码 390期】
  3. java方法栈和c方法栈_Java虚拟机:本地方法栈与Native方法
  4. java excel 操作方式_java excel兩種操作方式
  5. LDO与DC/DC差别
  6. python赋值与c语言区别,运算符-赋值运算符和逻辑运算符
  7. linux删除所有python进程,linux 下python进程查看及关闭
  8. 你还在全量加载iView么?试试手动配一个吧
  9. js中点与方括号及for...in
  10. JavaScript实现map