-实战
这几天看到身边的朋友在玩儿股票;顺便查了查彩票的官网及操作步骤;看到那些以往的中奖号码; 脑海中突然有个新的想法;如果我把中奖的号码全部都抓取下来;在通过数据分析进行可视化;分析那些出现频率高的中奖数字。会不会有奇效呢!想的再多 不如尝试一下。
目标网站
快乐8 彩球数据
这些都是中奖的号码;大家可以登录该网站查看。
双色球 数据
大乐透 数据
我们发现这个网站每张彩票的流程,基本上都差不多。通过 Chrome 浏览器右键检查查看 network 并对网站结构进行分析;大致上浏览了一下;数据的布局方式也一样,那就...... 挑兵挑将~ 随便挑一个😁
爬虫三部曲这里就不过多描述了; 不知道的同学可以看我之前写的文章。
为了使代码更加方便大家阅读 我将其业务逻辑用简单的函数封装起来,分为2步;看代码。。。
# 第一步:抓取中彩网数据
def requests_data():
pass
# 第二步: 处理数据 并存储
def save_data(tony_dict):
pass
if __name__ == '__main__':
tony_dict=requests_data()
save_data(tony_dict)
这样看起来是不是就简单明了。 不管三七二十一;首先我们先把数据给抓取下来 ~看法宝😎
import requests
# 第一步:抓取中彩网数据
def requests_data(index):
cookies = {
'Hm_lvt_12e4883fd1649d006e3ae22a39f97330': '1606980',
'_ga': 'GA1.2.1535259899.1606980613',
'PHPSESSID': 'ko9acne5fc09ag34tauema9dk5',
'Hm_lvt_692bd5f9c07d3ebd0063062fb0d7622f': '1606980',
'Hm_lpvt_692bd5f9c07d3ebd0063062fb0d7622f': '1606980',
'_gid': 'GA1.2.702530936.16077449',
'Hm_lpvt_12e4883fd1649d006e3ae22a39f97330': '1607745',
}
headers = {
'Connection': 'keep-alive',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36',
'Accept': '*/*',
'Sec-Fetch-Site': 'same-site',
'Sec-Fetch-Mode': 'no-cors',
'Referer': 'https://www.zhcw.com/kjxx/3d/',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9',
}
params = (
('callback', 'jQuery1122035713028555611515_1607745050216'),
('transactionType', '10001001'),
('lotteryId', '2'),
('issueCount', '100'),
('startIssue', ''),
('endIssue', ''),
('startDate', ''),
('endDate', ''),
('type', '0'),
('pageNum', index),
('pageSize', '30'),
('tt', '0.7235300526774737'),
('_', '1607745050225'),
)
# 获取服务器返回数据
response = requests.get('https://jc.zhcw.com/port/client_json.php', headers=headers, params=params, cookies=cookies).content.decode('utf-8')
print(response)
if __name__ == '__main__':
for index in range(1, 10):
tony_dict=requests_data(index)
save_data(tony_dict)
运行程序的时候;就能够获取返回的数据内容了 ! 接下来就到了爬虫中最关键的一步;数据解析~ 首先先把需要的内容提取出来,这里埋一个小坑,大家尝试着试一下如何提取这个元素😁动动手~
我们在提取数据的时候也需要考虑这个数据应该通过什么样的存储方式进行保存。 这里我用的是 excel表格。
import xlwt
wb = xlwt.Workbook()
sheet= wb.add_sheet('福彩3D')
# 存储表头文件
row=["期号","开奖日期","开奖号码","总销售额(元)","直选(注数)","直选(单注奖金(元))",'组三(注数)','组三(单注奖金(元)','组六(注数)','组六(单注奖金(元)']
# 写入表头
for i in range(0,len(row)):
sheet.write(0,i,row[i])
# 保存
wb.save("福彩3D_版本2.xls")
当表头数据存储至excel之后 ;准备工作就已经OK了 ;接下来可以放心的做数据解析了 ;只需要将解析的数据添加到excel表格中就可以了。
i=1
# 第二步: 处理数据 并 存储
def save_data(tony_dict):
global i
for item in tony_dict:
sheet.write(i, 0, item['issue'])
sheet.write(i, 1, item['openTime'])
sheet.write(i, 2, item['frontWinningNum'])
sheet.write(i, 3, item['saleMoney'])
wd=item['winnerDetails']
print(wd)
i+=1
这样就把获取到的4个数据添加到excel表格了;后续其他的数据按照这种方式依次添加就行。大家可以锻炼一下!