python+requests+ 爬取官网双色球开奖数据

本文介绍了使用Python的requests库爬取官网双色球开奖数据的方法,包括两种查询方式,着重讨论了请求头中referrer信息的重要性,并分享了如何处理和分析返回的JSON数据,同时提及了数据库存储和避免频繁请求导致中断的策略。
摘要由CSDN通过智能技术生成

python+requests+mysql 爬取官网双色球开奖数据

分析网页数据获取方式

第一种查询方式

在这里插入图片描述
在官网上 可以找到多种数据查询方式,第一种是按期号查询数据 指定code去查询该期数据
查询链接如下:
Request URL: http://www.cwl.gov.cn/cwl_admin/kjxx/findKjxx/forIssue?name=ssq&code=2018126

第二种查询方式

批量查询
在这里 有其他的批量查询数据的方式 其中自定义查询中选用按期号查询的方式较为方便
在这里插入图片描述
这种查询方式可以指定例如 从 2013001期到2013101期 甚至从 2013001-2015001都可以查 但是如果时间跨度较大的话 回传的数据会分页
链接如下
Request URL: http://www.cwl.gov.cn/cwl_admin/kjxx/findDrawNotice?name=ssq&issueCount=&issueStart=2013001&issueEnd=2015001&dayStart=&dayEnd=&pageNo=

有些参数可以为空 这里可以精简一下
Url: http://www.cwl.gov.cn/cwl_admin/kjxx/findDrawNotice?name=ssq&issueStart=2018001&issueEnd=2018051

注意:链接直接点过去的话是看不到任何东西的,服务端应该设置了某种 Referrer Policy
这个坑困扰了我有一阵 刚入坑python爬虫就遇到这种棘手的问题
我并没有从豆瓣爬虫开始练起 而是找了一个需要的数据的链接开始爬
虽然会遇到更多的坑 但与此同时 在解决这些问题的过程中 也能学到更多的东西
这个问题经过反复对比请求头 终于发现了问题:
请求头中不带referrer信息的话 是拿不到任何数据的
这里可以对比两次请求的请求头来看

图1 是成功拿到数据的请求头
在这里插入图片描述
图2 无任何数据返回
在这里插入图片描述
先简单拿到部分数据看一下

url= 'http://www.cwl.gov.cn/cwl_admin/kjxx/findDrawNotice?name=ssq&issueStart=2018001&issueEnd=2018003'
      
        res = requests.get(url)
        print(res.text)

这样写的话 对于某些 链接是有效的 开始什么数据都拿不到 确实很让人迷惑
先开始想 是不是没有加user-agent???
空想无用 尝试验证一下 这里在请求头中 加上user-angent试试
代码如下

url= 'http://www.cwl.gov.cn/cwl_admin/kjxx/findDrawNotice?name=ssq&issueStart=2018001&issueEnd=2018003'
        headers = {
   
                    'User - Agent': 'Mozilla / 5.0(Windows NT 10.0;WOW64) AppleWebKit / 537.36(KHTML, like Gecko) Chrome / 70.0.3538.77 Safari / 537.36'

        }
        res = requests.get(url, headers=headers)
        print(res.text)

还是拿不到 数据 那就不只是user-angent的问题了
就像上面说的 通过反复对比请求头 最后终于解决了问题

url= 'http://www.cwl.gov.cn/cwl_admin/kjxx/findDrawNotice?name=ssq&issueStart=2018001&issueEnd=2018003'
        headers = {
   
            'Referer': 'http://www.cwl.gov.cn/kjxx/ssq/kjgg/',
        }
        res = requests.get(url, headers=headers)
        print(res.text)

再次尝试 ,结果不需要加user-angent 也可以,最终正常拿到数据的代码如上
现在可以简单拿到回传的数据了

为了好分析 这里先拿两期数据下来分析一下
拿到的数据如下:

{
	'state': 0,
	'message': '查询成功',
	'pageCount': 1,
	'countNum': 2,
	'Tflag': 1,
	'result': [{
		'name': '双色球',
		'code': '2014004',
		'detailsLink': '/c/2014-01-09/384956.shtml',
		'videoLink': '',
		'date': '2014-01-09(四)',
		'week': '四',
		'red': '01,04,19,22,24,25',
		'blue': '15',
		'blue2': '',
		'sales': '373155800',
		'poolmoney': '201488460',
		'content': '北京1注,安徽1注,山东2注,广东1注,共5注。',
		'addmoney': '',
		'addmoney2': '',
		'msg': '',
		'z2add': '',
		'm2add': '',
		'prizegrades': [{
			'type': 1,
			'typenum': '5',
			'typemoney': '9580091'
		}, {
		
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值