爬取大乐透开奖结果
标签:
日期: 2024-01-07 | 作者: admin | 浏览: 109

经常刷到各种彩票中大奖的信息推送,也看到有人在求开奖号码结果集,便试着爬取了下。

期间还顺便学习了下requests、csv的入门操作。

import requests
import csv
import time

# 体育彩票官方历史开奖
url = 'https://webapi.sporttery.cn/gateway/lottery/getHistoryPageListV1.qry?gameNo=85&provinceId=0&pageSize=30&isVerify=1&pageNo='
headers = {
    'authority': 'webapi.sporttery.cn',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 OPR/99.0.0.0'
}

# 写入csv文件
with open('lottery.csv', 'w') as f:
    write = csv.writer(f)
    # 表头内容
    title = ['期号', '开奖日期', '开奖结果(前区)', '开奖结果(后区)', '一等奖(注数)', '基本奖金', '一等奖(追加注数)', '追加奖金', '奖池奖金']
    # 写入表头
    write.writerow(title)

    # 循环获取各页面数据
    for i in range(1, 83):
        result = requests.get(url + str(i), headers=headers).json()
        obj_list = result['value']['list']
        for j in obj_list:
            write.writerow(
                [
                    j['lotteryDrawNum'], j['lotteryDrawTime'],
                    # 开奖结果返回的长度为20位,最初没注意,怎么切都不对…
                    j['lotteryDrawResult'][:15], j['lotteryDrawResult'][15:],
                    j['prizeLevelList'][0]['stakeCount'], j['prizeLevelList'][0]['stakeAmount'],
                    j['prizeLevelList'][1]['stakeCount'], j['prizeLevelList'][1]['stakeAmount'],
                    j['poolBalanceAfterdraw']
                ])
        print('爬取第' + str(i) + '页完成')
        # 慢慢爬, 怕…
        time.sleep(3)

生成的表格排序是根据爬取的页面结果排序的,内容追加后有点混乱,可以直接在表格中重新排序即可。