我用Python爬取了14年所有的福彩3D信息,彩民们,只能帮你们到这了

640?wx_fmt=gif


作者|丁彦军

来源|恋习Python


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


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


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


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


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


HTML下载器:下载HTML网页

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

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


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


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


640?wx_fmt=png

640?wx_fmt=png

可以发现,目标网页的URL 

http://kaijiang.zhcw.com/zhcw/html/3d/list_2.html,

每次变化一处:list_x后面的数字,其代表第几页。


640?wx_fmt=png

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


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

640?wx_fmt=png

640?wx_fmt=png

(一共将近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年以来的所有数据),以人类的计算水平,即使有的话也计算不出来的。彩票是娱乐,是一个运气的游戏,一个人即使在彩票上赚到了钱,运气好,也不代表使用的方法就可以提高彩票中奖率。任何打着提高中奖率的期号进行的盈利行为,即使出发点是善意的,也会最终走向错误。


xx的彩票(尤其是黑彩)的实质,就是虚构一个不劳而获的人,去忽悠一群想不劳而获的人,最终养活一批真正不劳而获的人。犹如币圈一个bi样!


数据与算法之美

用数据解决不可能


640?wx_fmt=jpeg

长按扫码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/303090.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#: 8.0 和 9.0 常用新特性

在《带你了解C#每个版本新特性》 一文中介绍了,C# 1.0 到 7.0 的不同特性,本文接着介绍在 8.0 和 9.0 中的一些常用新特性。C# 8.0在 dotNET Core 3.1 及以上版本中就可以使用 C# 8 的语法,下面是 C# 8 中我认为比较常用的一些新功能。默认接…

选股公式 成功率测试 软件,通达信股票软件选股公式,99%的成功率,你还等什么?...

工具:通达信金融终端使用方法:1、通达信软件界面2、点击“功能”“公式系统”“公式管理器”“条件选股公式”“其他类型”,点击新建3、使用选股公式,点击ctrlt,弹出条件选股窗口4、选中公式,点击加入条件&…

小米 华为都要造车?.NET高薪潮来了!(附招聘链接)

近期网络沸沸扬扬的小米、华为、苹果 都要造车,其实百度、阿里和腾讯 也都入局了。互联网大佬们纷纷开始造车,跟我们小小程序员有关系吗?有!高薪机会来了,尤其是WPF!且听下文分解。物联网终极形态“互联网”…

计算机bq,BQ24721部分翻译

上电:当适配器没有检测到时,REGN输出4.6V,并且VREF5 LDO稳压器关闭,为了减少电池的电力损耗。当适配器没检测到时候,VREF5_LDO会被下拉到地。当VCC输入的电压高于6V,REGN就会开始调节输出4.6V,当…

聚类算法学习指南(二)

http://hi.baidu.com/catfool/blog/item/c06bec3931a0efcad4622524.html 聚类算法学习指南(二)2009-05-06 20:49下图图 3-1 聚类方法的分类示意图3.1 传统聚类算法3.1.1 层次方法层次法对给定的数据对象集合进行层次似的分解。按层次分解的形成方式&…

.NetCore跨域

描述浏览器安全策略上的安全限制可以有效阻止Ajax向另外的一个域server发起请求,这就是著名的同源策略,如何突破这种限制,可以使用CORS。public static void AddCommon(this IServiceCollection services){services.AddCors(options >{opt…

山东大学计算机非全上课,山东大学非全日制研究生上课方式

【导读】山东大学非全日制研究生上课方式。如今非全日制研究生考试已经与全日制一样,连考试内容和时间也都是一样。许多想要报考山东大学非全日制研究生的人员开始担心,非全日制研究生和全日制研究生的考试样了,那么上课方式会不会也是一样的…

【转载】可复用的FS

有很多朋友要求给出一个应用ESFramework的Demo,在前面介绍ESFramework支持的4层架构中(回顾),有AS、FS、IRAS,其中FS的功能需求最简单,所以本文就给出一个FS实现示例。 FS主要用于管理功能插件&…

Git、GitHub、GitLab三者之间的联系以及区别

在讲区别以及联系之前先简要的介绍一下,这三者都是什么(本篇文章适合刚入门的新手,大佬请出门左转)1.什么是 Git?Git 是一个版本控制系统。版本控制是一种用于记录一个或多个文件内容变化,方便我们查阅特定版本修订情况的系统。以前在没有使…

zen服务器芯片,服务器版Zen处理器简直大杀器:32核64线程,8通道DDR4内存

拼 命 加 载 中 ...在这次的E3展会上,AMD除了公布RX 470/460显卡之外,还跟雷蛇发了一款支持VR的背包PC,使用了RX480显卡,处理器则是AMD的Zen,8核16线程,这还只是桌面版的,要知道Zen处理器最重要…

欢迎与我一起交流安全管理平台

近期,51CTO给我开了一个专题讨论区(http://doctor.51cto.com/develop-241-1.html),为期一周,就安全管理平台这个领域的问题与大家交流分享。欢迎同好前往交流。在其中,我会分享仅代表我个人的一些体会和经验…

【赠书活动】优雅免费领书指南

快扶朕起来,我还要送书!在上一期的赠书活动上结束后。超模君就吩咐小树包装好书籍,寄给获奖的模友们!很多模友收到书籍都表示很不错,期望能再来一次赠书活动。这不,朕又想,超模君又想送书了&…

MySql 数据库基本设计规范

1、所有表必须使用Innodb存储引擎没有特殊要求(即Innodb无法满足的功能如:列存储,存储空间数据等)的情况下,所有表必须使用Innodb存储引擎(mysql5.5之前默认使用Myisam,5.6以后默认的为Innodb&a…

ASA防火墙16 SSL/×××

1、ASA的基本配置:Archasa(config)# int e0/0 Archasa(config-if)# ip add 192.168.0.1 255.255.255.0 Archasa(config-if)# nameif outside Archasa(config)# int e0/1 Archasa(config-if)# ip add 172.20.59.10 255.255.255.0 Archasa(config-if)# nameif i…

利用11行Python代码,盗取了室友的U盘,内容十分刺激!

作者:Python新世界 來源:简书https://www.jianshu.com/p/3d7b2d9fe679序言那个猥琐的家伙整天把个U盘藏着当宝,都睡觉了就拿出来插到电脑上。我决定想个办法看他U盘里都藏了什么,直接去抢U盘是不可能的,骗也是…

如何查询服务器是否安装系统时间,如何查看系统当前的NTP配置?

我试过了:w32tm /query /status我有:The command /query is unknown.在另一台机器上,我得到:The following error occurred: The service has not been started. (0x80070426)然后我尝试了:reg QUERY [\\machine\]HKLM…

鸡肋还是革新——Blazor进WinForm

winform是一老技术,感觉都有点掉牙了(我近20年前就是从winform开始接触.net的);blazor,是微软技术圈里的新宠,正在被悉心照顾。当这一老一少的技术碰撞后,会有什么火花?.net v6.0.0-…

一个女程序员征男友的需求说明书

前 言常听人说程序员的生活枯燥为人刻板,其实这是你不懂程序员。代码之外,生活之中,这些高智商人的幽默风趣,才华的展现往往能在「论坛」这个神奇的领域一窥究竟。(悲哀,因为给他们展现Coder之外才华的地方…

Linux锁定和解锁用户

1、禁止个别用户登录。比如禁止lynn用户登录。 passwd -l test 这就话的意思是锁定test用户,这样该用户就不能登录了。 passwd -u test 对锁定的用户lynn进行解锁,用户可登录了。 2、我们通过修改/etc/passwd文件中用户登录的shell vi /etc/passwd test:…

查看服务器物理内存大小,如何看服务器的物理内存大小

如何看服务器的物理内存大小 内容精选换一换JVM在执行Java程序时会把它所管理的内存划分为若干个不同的运行时数据区域,主要包括:程序计数器、方法区、虚拟机栈、本地方法栈和堆:程序计数器可以看作时当前线程所执行的字节码的行号指示器。方…