Tips: 本文创建于2017年2月27日,已超过 2 年,内容或图片可能已经失效!

定时爬取内容

一个python定时爬取内容的例子

#!/usr/bin/env python  
#coding=utf-8  
import time, os, urllib2, re, string, sched  
# sched 调度模块,延时处理机制  
# 初始化sched模块,定时调度的类scheduler  
schedule = sched.scheduler(time.time, time.sleep) # 参数,一个是时间戳,延时方法  
# 定义爬取函数  
def execute_command(): # 执行命令函数  
    # 定义请求  
    request = urllib2.Request("http://xxx.xxx.xxx")  
    response = urllib2.urlopen(request)  
    reader = response.read() # 读取文件对象  
    # print reader # 网页源代码  
    # compile(source, filename, mode[, flags[, dont_inherit]])  
    # source 字符串或者是Ast对象  
    # filename 代码文件名称  
    # mode 指定编译代码的种类  
    user = re.compile(r'人数<br><em>.*?</em>')  
    usernum = user.findall(reader)  
    if usernum:  
        currentnum = usernum[0]  
        #print currentnum # 人数<br><em>12</em>  
        currentnum = currentnum[string.index(currentnum,'>') + 5:string.rindex(currentnum,'<')] # 匹配尖括号中间的12  
        print "当前时间", time.strftime('%Y年%m月%d日%H时%M分',time.localtime(time.time())),'在线人数:',currentnum  
  
        result = open("test.txt","a")  
        result.write('{year:new Date(' + time.strftime('%Y年%m月%d日%H时%M分',time.localtime(time.time())) + '),value:' + currentnum + '},\n')  
        result.close()  
# 定时调度函数  
def timing(inc):  
    # 第一个参数,整数或浮点数,代表多少秒后执行任务  
    # 第二个参数,优先级,0代表优先级最高  
    # 第三个参数,要执行的任务,要执行函数的函数名  
    # 第四个参数,传入执行任务函数名的参数,用小括号抱起来,没有参数可以传一个括号  
    schedule.enter(inc, 0, timing,(inc,)) # 这里回调函数,写timing,execute_command放在下面来执行  
    execute_command() # 执行抓取方法  
def main(inc=3):  
    schedule.enter(0,0,timing,(inc,)) # 这里的0 ,取决于上面初始化时的time.sleep  
    schedule.run()  
if __name__ == '__main__':  
    main()