一、背景
在网上闲逛的日子总归是无聊的,百度的跟踪也是一如既往的好,它总是会给我推荐一些互联网圈里面的新闻,然后又在其中穿插一些新游戏广告,正因如此,我看到了一篇报道某个地方某个人中了五百万大奖的新闻,灵感迸发,进而写了一个关于彩票的爬虫。
二、网页分析
今天爬取的是中国彩票网(中彩网)中的福彩3D这款彩票,在我初中的时候很喜欢买这个彩票,因为只需要在0~9的十个数字中选三个,相对于其余的选七八个数字来说要少得多,但是按照排列公式来说的话一共有720种选法(不包括重复),所以还是挺可怕的。废话不多说了,首先是网址:http://www.zhcw.com/3d/kaijiangshuju/?type=0,进去之后下一页发现网址没有任何变化,由此判断是个动态网页,需要找出真正的网址,故网页空白任意位置鼠标右键打开检查(PS:我用的是Chrome浏览器,某些浏览器可能是审查元素),在弹出来的窗口中点击Network之后F5刷新,会看到弹出了一大堆的网址,我们找啊找,最终找到一个名字叫list.html的页面,我承认当时我激动了,因为list是列表的意思,在这个里面列表能是啥啊?肯定就是开奖列表啊!打开之后果不其然是开奖列表,OK,找到了真正的网址,如图一
下一步就是实现翻页效果咯,我们进入真实网址,点击下一页之后发现网址后面的list.html变成了list_2.html,再翻一页变成了list_3.html,尝试将第一页改为list_1.html后发现也能正确浏览,故网址规律找到了。
最后一步分析开奖号码到底藏在哪个地方,这里不详细的说步骤了,如图二,开奖号码就在<em></em>中。
OK,网页分析已经完成,下面直接进入代码。
三、代码解释
如图三的代码,仅仅只有35行,这应该只是一个我写过的爬虫中排在中等偏下的难度吧。简单解释:14行导入第三方包,这个不具体解释了,69行是浏览器的请求头,这两个百度一下就知道了。11行定义一个lists列表用来存储开奖号码。下面两个函数,get_info函数用来获取开奖号码,因为这里为了方便下一个统计函数,所以直接用正则表达式进行爬取,然后将爬取的结果依次存到lists列表中,最后返回lists列表供data函数使用,下面data函数功能是统计每一个开奖数字出现的次数,最后main函数里面实现翻页的效果以及调用get_info函数爬取每页的内容,最后有个time.sleep()语句,让程序在每个页面上停留一会儿,停留时间为5~20秒中的任意一个数字。最后一行待所有的页面都获取完成之后执行data()函数。
四、总结及运行结果
总体来说这个程序很简单,其实也可以把它变得稍稍难一点,比如加上数据分析和机器学习中的学习算法和预测算法,不过我还没学那些东西,而且就目前来看学这些应该要等到今年年底了,所以有些不完美。不过等学了之后倒是可以继续完善这个程序,使之成为一个有得赚的程序。要知道大佬们预测世界杯准确率都低得吓人啊。最后如图四,运行结果显示从2018年一月份到现在为止出现次数最多的是6。