Skip to content

用Python简单爬取双色球开奖信息

很多以前的双色球信息都不能看了,因此可以每2天爬取一次双色球信息,保存下来,以后使用。

注意合法性:

  • 只爬公开、非敏感、非版权数据
  • 不突破防护、不干扰运营、遵守robots.txt规则
  • 仅供学习使用

工具

  • python2.7
  • 一台debian 8.9的服务器

具体方法

1、使用python2.7编写爬取脚本

  1. 抓取网页html
  2. 编写正则
  3. 匹配网页html和需要的正则信息,提取信息保存为字符串
  4. 把结果写入文件(你也可以写入数据库)
python
# -*- coding: utf-8 -*-
import re
import urllib
import time
 
def getHtml(url):
    html = urllib.urlopen(url)
    return html.read()
 
#获取网页html内容
html = getHtml("http://zx.500.com/ssq/")
 
#比对需要的信息
reg =  ['<dt>([0-9]\d*).*</dt>']#期数
reg.append('<li class="redball">([0-9]\d*)</li>')#红球
reg.append('<li class="blueball">([0-9]\d*)</li>')#蓝球
 
outstr = "";
for i in range(len(reg)):
    page = re.compile(reg[i])#生成正则
    rs = re.findall(page,html)#匹配网页中的正则字符串
    for j in range(len(rs)):#获得结果
        outstr+= rs[j] + ","
 
#print time.strftime('%Y-%m-%d',time.localtime(time.time()))+":"+outstr[:-1]
#把结果写入文件
with open('lot_500_ssq.txt', 'a') as f:
    f.write(time.strftime('%Y-%m-%d',time.localtime(time.time()))+":"+outstr[:-1]+'\n')

编写完成后,保存为/home/lottery/grab500_ssq.py

2、编辑一个sh脚本

注意这里的cd /home/lottery是必须的,是你python文件存在的位置,如果不写这个,crontab执行不了这个python文件,因为在它的目录找不到。

shell
#!/bin/sh
cd /home/lottery
python grab500_ssq.py

保存为/home/lottery/main.sh

3、设置crontab定时执行

参考《Debian 8下定时自动备份Mysql数据库》

  1. 修改sh文件权限为可执行(否则会报permission deny错误):
shell
chmod 755 /home/lottery/main.sh
  1. 编辑crontab
shell
vi /etc/crontab

设置内容为:每2天晚上的22点14分执行一次main.sh

shell
14 22 */2 * * root /home/lottery/main.sh
  1. 重启crontab使命令生效
shell
/etc/init.d/cron restart
# 提示:[ ok ] Restarting cron (via systemctl): cron.service.

结果

每隔2天,就会进行一次爬取:

shell
cat lot_500_ssq.txt
2018-03-14:18028,03,08,11,14,18,23,16

时间:期数,红球,蓝球。
同样的方法可以爬取体彩的大乐透。

转载请注明出处https://bananaoven.com/articles/166.html | 香蕉微波炉
分享许可方式知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议
重大发现:转载注明原文网址的同学刚买了彩票就中奖,刚写完代码就跑通,刚转身就遇到了真爱。