python抓取历年特码开奖记录
背景:
小时候,有种游戏,两个主人公:白XX和曾XX,每个家庭把他俩像活菩萨一样供着,供他们吃,供他们穿
做生意的老板为了这两位活菩萨,关门大吉
农民为了这两位活菩萨卖牛卖田变卖家产
做官的为了这两位活菩萨丢掉乌纱帽
跳楼,自杀,跳河,跑路 成了一时的风气
当然,买码也是闹出很多笑话的
比如:不识字的农民看个CCTV7频道还看出了个特码,最后押注了07,还特么中了大奖。
很多人为了白XX和曾XX,最后变成了CCTV少儿频道天线宝宝的忠实粉丝,这也可以看出特码啊,有木有啊
想起一位长者退休后俨然成为白XX和曾XX的文员,每天都会手动更新记录资料和各种画图,当时我就在想要是我读书能有他一半认真,起码要把北京城读一圈才肯放手。
干活开始,准备将这个东西作为一个系列来深入的研究一下
巧妇难为无米之炊,今天Buddyquan就先想办法把数据从网上弄下来
知识点:splinter库的使用,将抓取数据存入数据库,pandas库连接Mysql数据库进行数据的调用和基本统计整理
教程:谷歌chrome浏览器驱动的安装
简单阐述为什么这次数据抓取选择这个库的原因:
1.一切都得从12306开始说起,当时已经自己倒腾出了查票的一套小程序,可是一直在想怎么绕过那个验证码,后来到网上各种找,看有没有解决办法,真的是东边不亮,亮西边,解决验证码的答案是没找到,倒是搜出了一大把标题党,其实内容就是介绍这个库的使用,耐着性子边操边练,也算入了门,后来去读了官方文档,发现这个家伙用处还是挺大
2.查了很多XXXX彩的网站,发现坑爹的一点就是所有开奖记录都是js生成的网页代码,刚好splinter库的broswer.html返回的就是响应了js后的网页文本(和审查元素看到的一样一样的)
3.1976年到2017年,也就41年,也就是说只要访问41次网页即可,对内存也造成不了多大的伤害,综合考虑,这个splinter就可以派上用场了
那么splinter能干些啥呢?用网上的一句话概括就是:
Splinter执行的时候会自动打开你指定的浏览器,访问指定的URL。
然后你所开发的模拟的任何行为,都会自动完成,你只需要坐在电脑面前,像看电影一样看着屏幕上各种动作自动完成然后收集结果即可。
使用参考文档:http://www.chinaz.com/program/2015/1209/481234.shtml
官方文档:https://splinter.readthedocs.io/en/latest/tutorial.html
怎么安装splinter和chrome浏览器驱动
Step1.安装splinter库(pip install splinter)
step2:安装浏览器驱动,我选择的是chrome的驱动
1.下载。2.解压。3.放至C:\Windows\System32 4.OK
驱动链接:http://pan.baidu.com/s/1nv2ni5N 密码:5c1c
接下来就开始抓取开奖结果相关的等一些字段吧!
网址通过浏览器搜索找到(这种类型的网站,有很多很多的。不过开奖记录基本上都是js生成的。)
我们看到,这种开奖记录,比小时候大家只去关注最终数字,情况是好的多,连笔画,五行都特么有。拿着放大镜数了一下共27个有价值字段我们可以取出
1.建个表,把数据写入数据库这种办法还是不错的,到时不管什么时候需要做有趣的统计分析研究的时候,直接拿数据就行了。
不用建表语句写入程序中是因为有没有发现navicat for mysql确实很好用啊。
2.网页基本分析完成,表也随着建好了之后,就是取数据了。
3.成功绕开用正则和json去解析js生成代码的痛苦,直接上splinter。
# coding utf- import requests from bs4 import BeautifulSoup from splinter.browser import Browser import pymysql from PIL import Image import pandas as pd #用作之后做数据处理分析 b = Browser(driver_name="chrome") #启动浏览器驱动 con=pymysql.connect(host=,user=',db='quan',charset='utf8') #连接数据库 cur=con.cursor() #创建游标 def get_html(url): b.visit(url) html=b.html return html pic_url='http://cimg2.163.com/catchpic/E/E7/E788DE8C249168F3C6B6CF878A633E04.jpg' url1='http://www.*****.com/kj/' year=[a ,)] num= for c in year: url=url1+str(c) s=BeautifulSoup(get_html(url),'lxml') length=len(s.find_all('tr',class_='nowTo001')) for i in range (length): value_list=[] for d in s.find_all('tr',class_='nowTo001')[i].stripped_strings: value_list.append(d) try: sql="replace into buddyquan \ (year,qishu,ma1,shengxiao1,ma2,shengxiao2,ma3,shengxiao3,ma4,shengxiao4,ma5,shengxiao5,ma6,shengxiao6,tema,\ texiao,tebo,tetou,danshuang,wuxing,jiaye,daxiao,weishu,duanwei,bihua,nannv,heshu,zonghe) \ values ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s',\ '%s','%s','%s','%s','%s','%s','%s','%s','%s','%s')" \ %(value_list[][:],value_list[][:-],value_list[],value_list[],value_list[],value_list[],\ value_list[],value_list[],value_list[],value_list[],value_list[],\ value_list[],value_list[],value_list[],value_list[],value_list[],\ value_list[],value_list[],value_list[],value_list[],value_list[],\ value_list[],value_list[],value_list[],value_list[],value_list[],value_list[],value_list[]) cur.execute(sql) con.commit() #提交事务 print (][:],value_list[][:],num)) except Exception as e: print ('插入错误\n%s ' % e) con.rollback() #回滚事务 num=num+ print (][:]) print ('特码来啦!\n已成功完成历年开奖结果采集,共 %s 期' % num) with open ("d://missbai.jpg",'wb') as f: f.write(requests.get(pic_url).content) missbai=Image.open("d://missbai.jpg") missbai.show() b.quit()
代码的方法很笨,还有很多地方可以优化,烦请各位大神多多指教
吃着火锅唱着歌,看着浏览器翻云覆雨狂奔之后,数据存入到了数据库中
这里用一个num打印了期数
可以看到,自开奖至今,已经进行了4865次,有多少人N年如一日啊。哎
数据已写入数据库,今天就先简单的用pandas库稍微热热身吧(虽然这点数据量用excel已经可以起飞了)
我们先将pd的行数设置为8行,显示宽度调为200,这样更便于查看数据
读取数据库数据所有数据(这里可以选择你想读取的任何数据,可以理解成用SQL提取数据然后用pandas来交互)
查看一下数据(效果还是差了点,列的宽度还存在问题,可以通过pd.set_option('display.max_colwidth',20)来设置列的最大宽度,将就着用吧)
我们先把显示台的最大宽度调为49
来来来,天线宝宝的粉丝们,猜猜哪一个数字开奖频数最大啊
叫你买4X,买买买。本命年多个数字没毛线大作用啊。
那你知道哪个生肖频数最大吗?
你还继续供着白XX和曾XX,把天线宝宝作为偶像的话,真的会变猪的啊。
预知后事如后,请听下回分解
注:本文的统计分析描述,毫无参考意义,开奖数据均已经过掺假处理,所展示数据均为虚拟数据,珍爱生命,远离白X姐和天线宝宝
概率事件的东西总是个磨人的小妖精,你心动了吗?因个人能力有限,如果你心动了,真诚的邀请您一起加入之后很多有趣的数据统计分析工作。
能力有限,做的不好的地方,大神们多多包含,尤其是逻辑与思维上的东西,需要大神们看到了多多指教和斧正。
Buddyquan博客:https://home.cnblogs.com/u/buddyquan/
QQ:1749061919 爬虫交流,数据交流
python抓取历年特码开奖记录的更多相关文章
- Python爬虫之小试牛刀——使用Python抓取百度街景图像
之前用.Net做过一些自动化爬虫程序,听大牛们说使用python来写爬虫更便捷,按捺不住抽空试了一把,使用Python抓取百度街景影像. 这两天,武汉迎来了一个德国总理默克尔这位大人物,又刷了一把武汉 ...
- Python 抓取网页并提取信息(程序详解)
最近因项目需要用到python处理网页,因此学习相关知识.下面程序使用python抓取网页并提取信息,具体内容如下: #---------------------------------------- ...
- 关于python抓取google搜索结果的若干问题
关于python抓取google搜索结果的若干问题 前一段时间一直在研究如何用python抓取搜索引擎结果,在实现的过程中遇到了很多的问题,我把我遇到的问题都记录下来,希望以后遇到同样问题的童 ...
- 用python抓取智联招聘信息并存入excel
用python抓取智联招聘信息并存入excel tags:python 智联招聘导出excel 引言:前一阵子是人们俗称的金三银四,跳槽的小朋友很多,我觉得每个人都应该给自己做一下规划,根据自己的进步 ...
- 使用python抓取并分析数据—链家网(requests+BeautifulSoup)(转)
本篇文章是使用python抓取数据的第一篇,使用requests+BeautifulSoup的方法对页面进行抓取和数据提取.通过使用requests库对链家网二手房列表页进行抓取,通过Beautifu ...
- Python抓取小说
Python抓取小说 前言 这个脚本命令MAC在抓取小说写,使用Python它有几个码. 代码 # coding=utf-8 import re import urllib2 import chard ...
- 使用 Python 抓取欧洲足球联赛数据
Web Scraping在大数据时代,一切都要用数据来说话,大数据处理的过程一般需要经过以下的几个步骤 数据的采集和获取 数据的清洗,抽取,变形和装载 数据的分析,探索和预测 ...
- python抓取性感尤物美女图
由于是只用标准库,装了python3运行本代码就能下载到多多的美女图... 写出代码前面部分的时候,我意识到自己的函数设计错了,强忍继续把代码写完. 测试发现速度一般,200K左右的下载速度,也没有很 ...
- python抓取网页例子
python抓取网页例子 最近在学习python,刚刚完成了一个网页抓取的例子,通过python抓取全世界所有的学校以及学院的数据,并存为xml文件.数据源是人人网. 因为刚学习python,写的代码 ...
随机推荐
- 【Kafka源码】处理请求
[TOC] 在KafkaServer中的入口在: apis = new KafkaApis(socketServer.requestChannel, replicaManager, groupCoor ...
- ReentrantLock可重入锁的使用场景
摘要 从使用场景的角度出发来介绍对ReentrantLock的使用,相对来说容易理解一些. 场景1:如果发现该操作已经在执行中则不再执行(有状态执行) a.用在定时任务时,如果任务执行时间可能超过下次 ...
- VPN连接机器不再输入密码以及Pin码方法
连接机器不输入密码 #!/usr/bin/env expect spawn ssh guosong@xx_ip; expect "*password*"; send &quo ...
- SpringMVC---Method
GET 平时网页的一些基本的URL都是GET请求的,用于执行查询操作. 但是由于GET中URL是有长度的限制的,而GET会把所有的参数都放在URL中 因此就会有下面的问题: 1 数据都明文暴露,用户可 ...
- 32.Linux-2440下的DMA驱动(详解)
DMA(Direct Memory Access) 即直接存储器访问, DMA 传输方式无需 CPU 直接控制传输,通过硬件为 RAM .I/O 设备开辟一条直接传送数据的通路,能使 CPU 的效率大 ...
- Go环境搭建
Linux系统golang环境搭建 1.下载安装包go1.8.linux-amd64.tar golang安装包下载地址:https://golang.org/dl/ ( 有可能被FQ) 2.解 ...
- linux服务器上Apache配置多域名
一, 打开httpd.conf 二 找到如下三个位置配置如下 DocumentRoot "/data" #以下这个配置是紧挨着的,有两个 <Directory "/ ...
- 十四、Hadoop学习笔记————Zookeeper概述与基本概念
顺序一致性:严格按照顺序在zookeeper上执行 原子性:所有事物请求的结果,在整个集群的应用情况一致 单一视图:无论从哪个服务器进入集群,看到的东西都是一致的 可靠性:服务端成功响应后,状态会 一 ...
- Nomad入门
Nomad 简介 Nomad是一个管理机器集群并在集群上运行应用程序的工具. Nomad的特点: 支持docker,Nomad的job可以使用docker驱动将应用部署到集群中. Nomad安装在li ...
- Java之多态
一.多态 1.含义 一种类型,呈现多种状态.主要关注类多态.方法多态. 2.多态的前提:继承 使用父类引用指向子类对象: Animal a1 = new Cat(): Object a1 = new ...