项目实战!我用Python爬取了14年所有的福彩3D信息

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

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

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

究竟哪一派预测的靠谱准确呢?不懂,因为我几乎不买×××(买也是玩玩,娱乐娱乐),也不去研究。但不管哪一派总得有数据可研究,今天我只负责帮大家如何获取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 requestsfrom bs4 import BeautifulSoupimport xlwtimport 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样!

如果你也是在学习Python,不管你是出于兴趣自学还是说想要以后从事这方面的工作,这个是我的菜鸟学Python学习交流群:639584010,群里有大牛,也有小白,群文件也有一些文档教程和海量视频,不定期还在群里分享直播,我们欢迎你的加入。

原文地址:http://blog.51cto.com/13719825/2147230

时间: 2024-11-05 22:03:27

项目实战!我用Python爬取了14年所有的福彩3D信息的相关文章

python基础项目实战:selenium控制浏览器爬取淘宝商品信息

今天为大家介绍一个Python利用selenium打开浏览器的方式来爬取淘宝商品的信息,下面就来看看,关于selenium的知识点,是如何做到控制浏览器获取网站的信息 导入第三方库 关键词搜索 抓取索引页 大家在学python的时候肯定会遇到很多难题,以及对于新技术的追求,这里推荐一下我们的Python学习扣qun:784758214,这里是python学习者聚集地!!同时,自己是一名高级python开发工程师,从基础的python脚本到web开发.爬虫.django.数据挖掘等,零基础到项目实

表哥用Python爬取数千条淘宝商品数据后,发现淘宝这些潜规则!

本文记录了笔者用 Python 爬取淘宝某商品的全过程,并对商品数据进行了挖掘与分析,最终得出结论. 项目内容 本案例选择商品类目:沙发. 数量:共 100 页 4400 个商品. 筛选条件:天猫.销量从高到低.价格 500 元以上. 项目目的 对商品标题进行文本分析,词云可视化 不同关键词 word 对应的 sales 的统计分析 商品的价格分布情况分析 商品的销量分布情况分析 不同价格区间的商品的平均销量分布 商品价格对销量的影响分析 商品价格对销售额的影响分析 不同省份或城市的商品数量分布

使用python爬取csdn博客访问量

最近学习了python和爬虫,想写一个程序练练手,所以我就想到了大家都比较关心的自己的博客访问量,使用python来获取自己博客的访问量,这也是后边我将要进行的项目的一部分,后边我会对博客的访问量进行分析,以折线图和饼图等可视化的方式展示自己博客被访问的情况,使自己能更加清楚自己的哪些博客更受关注,博客专家请勿喷,因为我不是专家,我听他们说专家本身就有这个功能. 一.网址分析 进入自己的博客页面,网址为:http://blog.csdn.net/xingjiarong 网址还是非常清晰的就是cs

利用Python爬取豆瓣电影

目标:使用Python爬取豆瓣电影并保存MongoDB数据库中 我们先来看一下通过浏览器的方式来筛选某些特定的电影: 我们把URL来复制出来分析分析: https://movie.douban.com/tag/#/?sort=T&range=0,10&tags=%E7%94%B5%E5%BD%B1,%E7%88%B1%E6%83%85,%E7%BE%8E%E5%9B%BD,%E9%BB%91%E5%B8%AE 有3个字段是非常重要的: 1.sort=T 2.range=0,10 3.tag

python爬虫教程:《利用Python爬取表情包》

python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!老师带领你使用多线程爬虫一键爬取20w的表情包~ python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!老师带领你使用多线程爬虫一键爬取20w的表情包~ python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!老师带领你使用多线程爬虫一键爬取20w的表情包~ python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!

python爬取某个网站的图片并保存到本地

python爬取某个网站的图片并保存到本地 #coding:utf-8 import urllib import re import sys reload(sys) sys.setdefaultencoding('gb2312') #获取整个页面的数据 def getHtml (url): page = urllib.urlopen(url) html = page.read() return html #保存图片到本地 def getImg(html): reg = r'src="(.+?\.

python爬取某个网页的图片-如百度贴吧

python爬取某个网页的图片-如百度贴吧 作者:vpoet 日期:大约在冬季 注:随意copy,不用告诉我 #coding:utf-8 import urllib import urllib2 import re if __name__ =="__main__": rex=r'src="(http://imgsrc.baidu.com/forum/w%3D580.*?\.jpg)"'; Response=urllib2.urlopen("http://t

使用python爬取MedSci上的影响因子排名靠前的文献

使用python爬取medsci上的期刊信息,通过设定条件,然后获取相应的期刊的的影响因子排名,期刊名称,英文全称和影响因子.主要过程如下: 首先,通过分析网站http://www.medsci.cn/sci的交互过程.可以使用谷歌或火狐浏览器的“审查元素-->Network”,然后就可以看到操作页面就可以看到网站的交互信息.当在网页上点击“我要查询”时,网页会发送一个POST消息给服务器,然后,服务器返回查询结果 然后,将查询到的结果使用正则表达式提取出需要的数据. 最后将提取出的数据输出到文

Python爬取网页的三种方法

# Python爬取网页的三种方法之一:  使用urllib或者urllib2模块的getparam方法 import urllib fopen1 = urllib.urlopen('http://www.baidu.com').info() fopen2 = urllib2.urlopen('http://www.sina.com').info() print fopen1.getparam('charset') print fopen2.getparam('charset') #----有些