python双色球 您所在的位置:网站首页 双色球开奖号码导出 python双色球

python双色球

2023-06-28 10:19| 来源: 网络整理| 查看: 265

多年之后,再次感受双色球的魅力,芸芸众生都为之倾倒,但是温馨提示:赌博有风险,本文仅做数据处理技术讨论,不构成任何资金投入建议!

现如今的IT行业竞争越来越激烈,一线大厂都是各种裁员,IT35定律不说是绝对,但是市场的反应很现实也很真实,那就是不管你是不是35以上,岗位都在缩减,有人IT转了快递外卖小哥,有的转了煎饼师傅,有的转了滴滴师傅,惨烈的状况到处可见,所以买彩票的人更多了,为了一探究竟决定再次研究一下这神秘的五百万头奖,先从数据采集开始,详细代码如下,送给需要改变现状的我们!

import requests # 发送请求 from bs4 import BeautifulSoup # 解析网页 import pandas as pd # 存取csv from time import sleep # 等待时间 from lxml import etree # 导入xpath包 import openpyxl,random # 加载工作薄 wb = openpyxl.Workbook() # 如果不存在即创建 wb.save(r'DoubleBall.xlsx') # 打开excel工作簿 wb = openpyxl.load_workbook(r'DoubleBall.xlsx') # 准备写工作簿中第一个sheet页 sheet1 = wb.worksheets[0] # 为数据页循环标识 indexnum = 1 print('爬取开始了') #http://kaijiang.zhcw.com/zhcw/html/ssq/list_2.html # 初始化URL第一页地址 url = 'http://kaijiang.zhcw.com/zhcw/html/ssq/list.html' # 请求头部,伪造浏览器,防止爬虫被反 headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36' } # 定义excel中的行数 indexcount = 0 # 初步了解数据总页数为151,可以放更大的值 while indexnum < 152: #如果不是数据页第一页则拼接数据页地址 if indexnum > 1: url = 'http://kaijiang.zhcw.com/zhcw/html/ssq/list_' + str(indexnum) + '.html' # 利用请求地址和请求头部构造请求对象 res = requests.get(url, headers=headers) # BeautifulSoup解析包 soup = BeautifulSoup(res.text, 'html.parser') # xpath解析包 构造 _Element 对象 res_elements = etree.HTML(res.text) # 使用 xpath 匹配数据,找到页面的table列表标签 , table = res_elements.xpath('//table') # 函数可以将转换为Element对象再转换回html字符串 table = etree.tostring(table[0], encoding='utf-8').decode() # read_html()函数是将HTML的表格转换为DataFrame df = pd.read_html(table, encoding='utf-8', header=0)[0] # 将dataframe进行转置,进而用to_dict()方法转为字典类型 results = list(df.T.to_dict().values()) # 根据每页数据条数,控制循环次数 count = 1 # 循环取每页的数据 for index in results: # 只有第一页和非第一页且不是第一条数据需要取出来存放到excel(因为每页都有表头) if indexnum == 1 or (indexnum != 1 and count != 1): # 如果一页的数据循环到最后一条时退出,跳转到下一页 if count < len(results): # 定义并赋值数据所需要存储的行号 indexcount = (indexnum - 1)*20 + count sheet1.cell(indexcount,1,index.get('开奖日期')) sheet1.cell(indexcount,2,index.get('期号')) # 由于所有号码都是存在一个值当中,所以需要通过按空格分隔为list listball = index.get('中奖号码').split() # 判断数据是否第一行是否为表头,如果大于1就不是,则动态赋值,如果是则直接写文字内容 if len(listball) > 1: sheet1.cell(indexcount,3,listball[0]) sheet1.cell(indexcount,4,listball[1]) sheet1.cell(indexcount,5,listball[2]) sheet1.cell(indexcount,6,listball[3]) sheet1.cell(indexcount,7,listball[4]) sheet1.cell(indexcount,8,listball[5]) sheet1.cell(indexcount,9,listball[6]) else: sheet1.cell(indexcount,3,'红球1') sheet1.cell(indexcount,4,'红球2') sheet1.cell(indexcount,5,'红球3') sheet1.cell(indexcount,6,'红球4') sheet1.cell(indexcount,7,'红球5') sheet1.cell(indexcount,8,'红球6') sheet1.cell(indexcount,9,'蓝球') sheet1.cell(indexcount,10,index.get('中奖注数')) sheet1.cell(indexcount,11,index.get('中奖注数.1')) count+=1 indexnum+=1 # 保存关闭excel wb.save(r'DoubleBall.xlsx') print('爬取结束了')



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有