php抓取开奖网页内容(中国体育彩票超级大乐透爬取代码grab500_dlt.py.dlt)

优采云 发布时间: 2021-10-30 14:05

  php抓取开奖网页内容(中国体育彩票超级大乐透爬取代码grab500_dlt.py.dlt)

  经调研发现,中国福彩双色球每周21:15开奖二、四、,中国体彩超级乐透每周六21:30开奖一、< @三、 ,而我们要完成的目标是:

  1、自动完成安装工作

  2、每周晚23:00二、四、,爬取每周晚23:00中福彩票双色球开奖数据一、< @三、 抓取中国体彩超级乐透开奖数据。

  1、工具

  

  2、具体方法1、使用python2.7写爬虫脚本

  除了正常的爬取操作,这里还增加了独立的参数设置。如果没有参数,则抓取到的数据在当前目录;如果有参数,可以设置保存目录和保存文件名后缀。在这种情况下,此脚本可以单独使用,也可以与 sh 计时任务结合使用。

  二色球爬行的grab500_ssq.py代码内容:

  # -*- coding:utf-8 -*-

import re

import urllib

import time

import sys

datapath = sys.path[0]

datasuffix = 'txt'

if (len(sys.argv)>1):

datapath = sys.argv[1]

datasuffix = sys.argv[2]

def getHtml(url):

html = urllib.urlopen(url)

return html.read()

html = getHtml("http://zx.500.com/ssq/")

reg = ['([0-9]\d*).*']

reg.append('([0-9]\d*)')

reg.append('([0-9]\d*)')

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(datapath+'/lot_500_ssq.'+datasuffix, 'a') as f:

f.write(time.strftime('%Y-%m-%d',time.localtime(time.time()))+":"+outstr[:-1]+'\n')

  DaLotto爬取代码grab500_dlt.py内容:

  # -*- coding:utf-8 -*-

import re

import urllib

import time

import sys

datapath = sys.path[0]

datasuffix ='txt'

if(len(sys.argv)>1):

datapath = sys.argv[1]

datasuffix = sys.argv[2]

defgetHtml(url):

html = urllib.urlopen(url)

return html.read()

html = getHtml("http://zx.500.com/dlt/")

reg =['([0-9]\d*).*']

reg.append('([0-9]\d*)')

reg.append('([0-9]\d*)')

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(datapath+'/lot_500_dlt.'+datasuffix,'a')as f:

f.write(time.strftime('%Y-%m-%d',time.localtime(time.time()))+":"+outstr[:-1]+'\n')

  2、编写一个可执行的sh脚本

  我们需要编写执行python的sh脚本bwb_lottery_everyday.sh。需要注意的是sh date得到的星期日值是0而不是7,crontab可以设置为0或7。

  #!/bin/sh

basepath=$(cd `dirname $0`; pwd) #shell's dir

datapath=$basepath'/lotterydata' #shell's datadir

datasuffix='txt' #datasuffix

a=`date -d "${date}" +%w`

if [ $a -eq 1 ] || [ $a -eq 3 ] || [ $a -eq 6 ]; then

python "${basepath}/grab500_ssq.py" $datapath $datasuffix

elif [ $a -eq 2 ] || [ $a -eq 4 ] || [ $a -eq 0 ]; then

python "${basepath}/grab500_dlt.py" $datapath $datasuffix

fi

  3、写一个主sh脚本

  编写一个主 sh 脚本 bwb_lottery_main.sh 来执行清理和设置任务。需要注意的是,这里直接使用系统的/etc/crontab文件来达到周期性执行的目的,不是很好,但是crontab -e方法很难自动化,所以只能设置为系统任务。

  #!/bin/sh

cronfile="/etc/crontab" #debian cronfile

basepath=$(cd `dirname $0`; pwd) #shell's dir

datapath=$basepath'/lotterydata' #shell's datadir

datasuffix='txt' #datasuffix

crontaskname="bwb_lottery_everyday.sh" #shell's name

crontasktime="0 23\t* * 1-4,6-7" #crontab task run time,default everyday except friday 23:00

echo "checking..."

if [ ! -f ${cronfile} ]; then

echo "crontab file $cronfile doesn't exsits.\nplease check file or modify shell setting and run shell again."

exit 1

fi

pyver=`python -V 2>&1|awk '{print $2}'|awk -F '.' '{print $1}'`

if [ $pyver != '2' ]; then

echo "python2(.7) is needed."

exit 1

fi

echo "writing crontab file..."

if [ `grep -c "${crontaskname}" ${cronfile}` -eq '0' ]; then

echo "${crontasktime}\troot\t${basepath}/${crontaskname}">>${cronfile}

else

sed -i "s#^.*${crontaskname}.*#${crontasktime}\troot\t${basepath}/${crontaskname}#" ${cronfile}

fi

/etc/init.d/cron restart

echo "making data dir..."

if [ ! -d "${datapath}" ]; then

mkdir ${datapath}

else

if [ ! -d "${datapath}/bak" ]; then

mkdir "${datapath}/bak"

else

mv ${datapath}/*.${datasuffix} ${datapath}/bak/ 2>/dev/null

fi

fi

echo "changing permission..."

chmod +x "$basepath/$crontaskname"

chmod +w -R $datapath

echo "finished!"

  最后,我们只需要执行这个主脚本,就可以一键自动完成彩票爬虫的布局。

  完整的项目代码已经上传到github~

  /BEWINDOWEB/lotterygrabber

  欢迎提交 watch、star、fork 质量三元组并提交 issue。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线