社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

用Python抓取分析十年彩票中奖结果

Python中文社区 • 6 年前 • 1037 次点击  

作者:菜鸟分析,一个痴恋于Python语言的程序猿  

专栏:zhihu.com/p/35667053

--  Illustrations by Daniel Liang --

前两天,在网上看到一个有意思的问题:彩票预测靠谱么?为什么还有那么多的人相信彩票预测?


暂且不说,彩票预测是否靠谱?彩票预测也分人而异,江湖上骗术很多,有些甚至会误以为彩票预测的准确度可以很高,这些操盘手法,让不知原理的彩民心甘情愿地掏钱买料。


在彩票预测上,也有正儿八经去研究“规律” 的,不外乎三个“派别”:数据派、图形派、公式派。还有一派不列入:字谜字画派,可纳入蛇精病行列。


究竟哪一派预测的靠谱准确呢?不懂,因为我几乎不买彩票(买也是玩玩,娱乐娱乐),也不去研究。但不管哪一派总得有数据可研究,今天我只负责帮大家如何获取3D彩票自创办以来,所有的数据(中奖号码、中奖注数、销售额以及返奖比例等)


在爬取一些简单的(没有反爬机制的)静态网页时,一般采取的策略是:选中目标(所谓的url链接),观察结构(链接结构,网页结构),构思动手(选用什么HTML下载器,解析器等)。在爬虫过程中,都会涉及到三种利器


HTML下载器:下载HTML网页

HTML解析器:解析出有效数据

数据存储器:将有效数据通过文件或者数据库的形式存储起来


今天,我们将利用requests库BeautifulSoup模块来抓取中彩网页福彩3D相关的信息,并将其保存到Excel表格中。


在开始前,先分析看看目标网页的结构:

可以发现,目标网页的URL http://kaijiang.zhcw.com/zhcw/html/3d/list_2.html,每次变化一处:list_x后面的数字,其代表第几页。


然后,观察其网页结构,也很简单,可以看到一期的彩票信息对应的源代码是一个tr节点,我们可以用BeautifulSoup库来提取这里面的一些信息。


整体思路是:若要获取福彩3D创办14年以来所有的信息(一共246页),只需要分开请求246次,这样获取不同的页面之后,再利用BeautifulSoup库提取到相关信息,利用xlrd库将数据写入Excel中,就可以获取到福彩3D所有的信息,结果如下图:

(一共将近5000条数据)

详情代码如下:

import requests

from bs4 import BeautifulSoup

import xlwt

import time


#获取第一页的内容

def get_one_page(url):

headers = {

'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36'

}

response = requests.get(url,headers=headers)

if response.status_code == 200:

return response.text

return None


#解析第一页内容,数据结构化

def parse_one_page(html):


    soup = BeautifulSoup(html,'lxml')

    i = 0

    for item in soup.select('tr')[2:-1]:


        yield{

            'time':item.select('td')[i].text,

            'issue':item.select('td')[i+1].text,

            'digits':item.select('td em')[0].text,

            'ten_digits':item.select('td em')[1].text,

            'hundred_digits':item.select('td em')[2].text,

            'single_selection':item.select('td')[i+3].text,

            'group_selection_3':item.select('td')[i+4].text,

            'group_selection_6':item.select('td')[i+5].text,

            'sales':item.select('td')[i+6].text,

            'return_rates':item.select('td')[i+7].text

    }


#将数据写入Excel表格中

def write_to_excel():

    f = xlwt.Workbook()                             

    sheet1 = f.add_sheet('3D',cell_overwrite_ok=True)

    row0 = ["开奖日期","期号","个位数","十位数","百位数","单数","组选3","组选6","销售额","返奖比例"]

    #写入第一行

    for j in range(0,len(row0)):

        sheet1.write(0,j,row0[j])

    

    #依次爬取每一页内容的每一期信息,并将其依次写入Excel

    i=0

    for k in range(1,247):

        url = 'http://kaijiang.zhcw.com/zhcw/html/3d/list_%s.html' %(str(k))

        html = get_one_page(url)

        print('正在保存第%d页。'%k)

        #写入每一期的信息

        for item in parse_one_page(html):

        sheet1.write(i+1,0,item['time'])

        sheet1.write(i+1,1,item['issue'])

        sheet1.write(i+1,2,item['digits'])

        sheet1.write(i+1,3,item['ten_digits'])

        sheet1.write(i+1,4,item['hundred_digits'])

        sheet1.write(i+1,5,item['single_selection'])

        sheet1.write(i+1,6,item['group_selection_3'])

        sheet1.write(i+1,7,item['group_selection_6'])

        sheet1.write(i+1,8,item['sales'])

        sheet1.write(i+1,9,item['return_rates'])

        i+=1


    f.save('3D.xls')


def main():

    write_to_excel()


if __name__ == '__main__':

    main()


到此,关于14年的福彩3D信息都可以爬取下来,至于如何预测?下一期的彩票趋势如何?不懂也不会,接下来是否中奖,就靠你们了。彩民们,我只能帮你们到这了!


最后结尾,关于彩票预测究竟准不准?我不说太多的理论分析,我只提出两个问题:


命题1:以双色球为例,下一期双色球号码,1,2,3,4,5,6,7 和 3,4,8,11,22,29,7 这两组号码的中奖概率如何?谁高谁低还是都一样?


命题2:第二个问题更简单。假设你已经投了9次硬币,结果都是正面。现在你要投第10次,请问是正面的概率是多少?


如果你还要问我,彩票有规律可循吗?在我看来,彩票规律就是没有规律(不信,你去分析分析14年以来的所有数据),以人类的计算水平,即使有的话也计算不出来的。彩票是娱乐,是一个运气的游戏,一个人即使在彩票上赚到了钱,运气好,也不代表使用的方法就可以提高彩票中奖率。任何打着提高中奖率的期号进行的盈利行为,即使出发点是善意的,也会最终走向错误。

赞赏作者

▼ 点击下方阅读原文,报名学习

Python网络爬虫学习线上暑期夏令营


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/nD3Zcl9ydF
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/20705
 
1037 次点击