python抓取彩票数据_用 Python 抓取分析十年彩票中奖结果_我不取名的博客-程序员秘密

技术标签: python抓取彩票数据  

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

在爬取一些简单的 (没有反爬机制的) 静态网页时, 一般采取的策略是: 选中目标(所谓的 url 链接), 观察结构(链接结构, 网页结构), 构思动手(选用什么 html 下载器, 解析器等).

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

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

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

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

详情代码如下:importrequests

frombs4importBeautifulSoup

importxlwt

importtime

# 获取第一页的内容

defget_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)

ifresponse.status_code==200:

returnresponse.text

returnNone

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

defparse_one_page(html):

soup=BeautifulSoup(html,'lxml')

i=0

foriteminsoup.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 表格中

defwrite_to_excel():

f=xlwt.Workbook()

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

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

#写入第一行

forjinrange(0,len(row0)):

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

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

i=0

forkinrange(1,247):

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

html=get_one_page(url)

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

#写入每一期的信息

foriteminparse_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')

defmain():

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

来源: http://developer.51cto.com/art/201807/578364.htm

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_36410316/article/details/111944953

智能推荐

文件上传与下载_文件的上传下载_大牛创神集的博客-程序员秘密

文件上传下载:文件的上传:1、要有form标签,method=POST;2、3、Form标签的enctype属性值必须为multipart/form-data值4、在form标签中input type=file 添加上传文件5、编写服务器代码接收,处理上传数据Http协议:上传用到的类和方法:Jar包:类和方法:用fileupload的:代码实现:例:文件下载:注意点,这里应该在2、之后。文件名中文乱码 (IE和谷歌):(火狐):例

【雪野实训记录】Oracle聊天室-L1阶段项目案例_SSSkyCong的博客-程序员秘密

/*阶段项目案例第一部分 案例描述  案例目的学习Oracle数据库的基本概念、建库、建表、基本增删改查,复杂查询(条件、关联、复合),,同时学习数据库对象:视图、索引的使用,还有oralce独有的两个数据库对象:序列和同义词的使用方法和场合,培养学生关于数据库的设计能力与数据的操作能力。  案例难度  ★★★  案例覆盖技能点1、  Oracle数据库基本概念2、

探索计算机系统与原理的课件,《计算机组成原理》课件的设计研究_莉雯Liwen的博客-程序员秘密

摘要:本文是结合中等职业学校《计算机组成原理》现实教学的实际课题,在进行充分的教学分析、教学设计、系统设计的基础上,以行为主义、认知主义、建构主义、人本主义等多种学习理论为指导而设计的《计算机组成原理》课程多媒体教学课件。关键词:多媒体课件;教学设计中图分类号:G624.0 文献标识码:A文章编号:1007-9599 (2011) 12-0000-01Computer Composition Pr...

Java中的Enum的使用与分析_Navagate的博客-程序员秘密

public enum EnumTest {     FRANK("The given name of me"),     LIU("The family name of me");     private String context;     private String getContext(){     return this.context;     }  

随便推点

表格的两列内容合并_qq_37235231的博客-程序员秘密

直接复制两列内容到vscode就可以,后面再根据自身需要修改

分块查找算法_森-Js的博客-程序员秘密

分块查找又称索引顺序查找,它是顺序查找的一种改进方法。算法流程:先选取各块中的最大关键字构成一个索引表; 查找分两个部分:先对索引表进行二分查找或顺序查找,以确定待查记录在哪一块中;然后,在已确定的块中用顺序法进行查找。图片借自https://blog.csdn.net/qq_27870421/article/details/106773548?utm_medium=distribute.pc_relevant.none-task-blog-title-1&spm=1001.210

11月区块链应用精选_DappReview官方的博客-程序员秘密

导读:前两个月的币圈本是一潭死水,当区块链被国家提升为“核心技术”后,立刻成为了波澜壮阔的大海。区块链应用社区中的玩家也更加活跃了。区块链应用不失为小白用户接触区块链的一个好途径,为此,DappReview为大家筛选了最近一些值得关注的区块链应用消息。BlocklordsBlocklords是一款区块链策略游戏,玩家扮演中世纪的领主,四处征战,最后一统江湖。Blocklords的中世纪画风很有特点...

用LaTeX在同一篇文章中展现不类型的代码_阿智智的博客-程序员秘密

1 问题描述我们利用LATEX\LaTeX写论文时往往会展现一些程序的关键代码,以清晰地表达自己的思想。虽然不建议大段大段的展现,这样有放水的嫌疑,但是在思想表达的关键点展现关键的代码是可以的,也是不可避免和无可非议的。通常情况下,一篇论文只展现一种语言也就够了。但是现代网络化的迅速发展,往往是多兵种联合作战,那种从头到尾一直使用一种语言的时代已经过去了。反映在论文的写作上,你就可能在同一篇论文中展

SVN迁移简单操作步骤_svn迁移步骤详解_v墨竹v的博客-程序员秘密

SVN迁移简单操作步骤 终于还是不幸的做了一次svn服务器的迁移工作。原来的那台LINUX服务器要被重装,只好被整体服务迁移到Windows平台下。原理部分,以前转过来一个帖子,看起来实在是复杂。今天实际操作了一把,还是蛮简单的1。把原来的Repository完整导出成一个dump文件svnadmin dump old/repo/path > dumpfile其中old/repo/path是老机器上版本库所在的位置,我机器上是默认的/etc/svn/repo/XXX文件夹;dumpfile就起个和项目相

-第3章 jQuery方法实现下拉菜单显示和隐藏_dgce32897的博客-程序员秘密

知识点jquery 的引入方式本地下载引入在线引入children 只获取子元素,不获取孙元素show() 显示、 hide() 隐藏。完整代码<!--Author: XiaoWenCreate a file: 2017-02-27 11:24:01Last modified: 2017-02-27 17:16:06Start to work:Fin...

推荐文章

热门文章

相关标签