python 定时爬取内容

Posted on Posted in python

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

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

Leave a Reply

Your email address will not be published. Required fields are marked *

four × one =