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

相关资源:彩票源码 彩票源码
已标记关键词 清除标记
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2020 CSDN 皮肤主题: 1024 设计师:白松林 返回首页