玩蛇网提供最新Python编程技术信息以及Python资源下载!

用python sched模块周期抓取论坛在线人线示例

python 培训

python sched模块周期抓取论坛在线人线示例。我的这段代码中使用了sched模块方法,它可以周期性地执行指定函数。并在指定函数中抓取指定网页和提取内容。这次的示例是抓取某论坛的在线人数。

#coding=utf-8
import time,sched,os,urllib2,re,string

#初始化sched模块的scheduler类
#第一个参数是一个可以返回时间戳的函数,第二个参数可以在定时未到达之前阻塞。
s = sched.scheduler(time.time,time.sleep)

#被周期性调度触发的函数
def event_func():
	req = urllib2.Request('XXX示例论坛地址')
	response = urllib2.urlopen(req)
	rawdata = response.read()
	response.close()
	
	usernump = re.compile(r'总计 <em>.*?</em> 人在线')
	usernummatch = usernump.findall(rawdata)
	if usernummatch:
		currentnum=usernummatch[0]
		currentnum=currentnum[string.index(currentnum,'>')+1:string.rindex(currentnum,'<')]
		print "Current Time:",time.strftime('%Y,%m,%d,%H,%M',time.localtime(time.time())),'User num:',currentnum
		
		# 保存结果,供图表工具amcharts使用
		result=open('liuvUserNUm','a')
		result.write('{year: new Date('+time.strftime('%Y,%m,%d,%H,%M',time.localtime(time.time()))+'),value:'+currentnum+'},\n')
		result.close()

#www.iplaypython.com
#enter四个参数分别为:间隔事件、优先级(用于同时间到达的两个事件同时执行时定序)、被调用触发的函数,给他的参数(注意:一定要以tuple给如,如果只有一个参数就(xx,))
def perform(inc):
    s.enter(inc,0,perform,(inc,))
    event_func()
   
def mymain(inc=900):
    s.enter(0,0,perform,(inc,))
    s.run()

if __name__ == "__main__":
	mymain()

玩蛇网原创,转载请注明文章出处和来源网址:http://www.iplaypython.com/code/other/o2316.html



微信公众号搜索"玩蛇网Python之家"加关注,每日最新的Python资讯、图文视频教程可以让你一手全掌握。强烈推荐关注!

微信扫描下图可直接关注

玩蛇网Python新手QQ群,欢迎加入: ① 240764603 玩蛇网Python新手群
文章发布日期:2016-04-21 09:39 玩蛇网 www.iplaypython.com

评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)
相关文章推荐
别人正在看
特别推荐
去顶部去底部