【小白学爬虫】用Python分析福彩3D|发现数字的秘密

相信福利彩票大家都买过吧,既然学爬虫为何不动手写个小程序抓一下呢,说不定还能发现福彩的秘密,本篇主要面向于对Python爬虫感兴趣的零基础的同学,实例为中彩网的福利3D彩票,比较有趣,小伙伴们一起动手开始吧。

环境:Windows XP
Python :Python 2.7
需要用到的库:re,xlwt,urllib,collections

1.分析网页链接

1).首先,打开中彩网的福彩3D,查看3D开奖数据http://www.zhcw.com/3d/kaijiangshuju/index.shtml?type=0

《【小白学爬虫】用Python分析福彩3D|发现数字的秘密》

2).我们用chrome浏览器,分析一下网站的结构和源码

《【小白学爬虫】用Python分析福彩3D|发现数字的秘密》

访问:

经过观察和分析,开奖数据链接很规律,如下:

3).页面分析结果

  • 经过对开奖数据页面分析,总共有230页,链接也很规律
  • 思路为从开奖数据页面抓取开奖日期、开奖期数及开奖号码等数据
  • 然后循环处理每一页,最后将数据写入execl表格即可

2.编写代码

新手,只要能达成目的即可,思路就简单粗暴一点

1).第一步,准备食材:

食从何来,与炒菜一个道理,首先要准备食材,要抓取到所有3D的开奖记录,那么就要获取到所有开奖页面的html源码,简单粗暴一点,循环访问第1页到第230页,将所有页面的html源码全部获取到,示例代码如下:

《【小白学爬虫】用Python分析福彩3D|发现数字的秘密》

输出的网站源码为:

《【小白学爬虫】用Python分析福彩3D|发现数字的秘密》

其实我们的彩票的数据都隐藏在上面这个源码html文件里面,下面我们的主要工作就是解析html文件就可以啦

2).第二步,开火爆炒

用get_3d_html()获取到的所有页面源码
使用正则表达式从中提取到开奖等数据(开奖日期、开奖期号、开奖号码)
代码如下:观察开奖数据页面源码,要获取的数据如下图红色框内的数据

《【小白学爬虫】用Python分析福彩3D|发现数字的秘密》

构造正则:

<tr>.
?<td align=”center”>(.?)</td>.
?<td align=”center”>(.?)</td>.
?<td align=”center” style=”padding-left:20px;”><em>(.?)</em>.
?<em>(.?)</em>.
?<em>(.?)</em></td>

《【小白学爬虫】用Python分析福彩3D|发现数字的秘密》

(u’2017-08-23′, u’2017228′, u’5′, u’3′, u’5′)
(u’2017-08-22′, u’2017227′, u’8′, u’8′, u’5′)
(u’2017-08-21′, u’2017226′, u’9′, u’0′, u’3′)
(u’2017-08-20′, u’2017225′, u’8′, u’0′, u’1′)
(u’2017-08-19′, u’2017224′, u’2′, u’6′, u’5′)
(u’2017-08-18′, u’2017223′, u’7′, u’7′, u’8′)
(u’2017-08-17′, u’2017222′, u’7′, u’3′, u’1′)
(u’2017-08-16′, u’2017221′, u’8′, u’5′, u’7′)
(u’2017-08-15′, u’2017220′, u’2′, u’8′, u’7′)
(u’2017-08-14′, u’2017219′, u’5′, u’1′, u’3′)

3.把数据写入表格中

经过上面几步,数据已经全部清洗完毕,现在把抓取到的开奖数据保存进excel表格中吧

《【小白学爬虫】用Python分析福彩3D|发现数字的秘密》

  • 利用xlwt模块生产一个表格对象(关于xlwt的用法可以看历史文章关于Excel表格如何处理|这篇最用心)

  • 先写一个表格的头部标题

  • 接着循环把获取的数据全部写入表格

  • 最后保存数据

    《【小白学爬虫】用Python分析福彩3D|发现数字的秘密》

4.找出福彩3d的秘密

上面的代码还有2页的数据,现在我们把页面从range(1,3)改成range(1,22),获取全年的数据,然后分析一下,看看数字背后的秘密:

1.最频繁出现的数字

1).找出全年数字出现频率最高的3个数字
2).找出百位数出现频率最高的3个数字
3).找出十位数出现频率最高的3个数字
4).找出个位数出现频率最高的3个数字

《【小白学爬虫】用Python分析福彩3D|发现数字的秘密》

全年最火的3个数字: 8 3 9

Most popular nums: [(u’8′, 137), (u’3′, 136), (u’9′, 136)]

百位数最火的3个数字:3 8 1

Top3 in hundreds place: [(u’3′, 55), (u’8′, 50), (u’1′, 45)]

十位数最火的3个数字:7,9,5

Top3 in ten place: [(u’7′, 50), (u’9′, 47), (u’5′, 45)]

个位数最火的3个数字:9,5,8

Top3 in single place: [(u’9′, 57), (u’5′, 46), (u’8′, 46)]

2.每期出现重复数字的概率

《【小白学爬虫】用Python分析福彩3D|发现数字的秘密》

利用set()简单的统计一下就可以了,发现Python分析数据简直太方便了
全年有133次出现重复数字,近三分之一的概率
133
Duplicate num percent:31.67%

需要源码 关注公众号”菜鸟学python”,输入:f3

    原文作者:菜鸟学python
    原文地址: https://www.jianshu.com/p/7b4ef25d82ad
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞