python中用Scrapy实现定时爬虫的实例讲解
一般网站发布信息会在具体实现范围内发布,我们在进行网络爬虫的过程中,可以通过设置定时爬虫,定时的爬取网站的内容。使用python爬虫框架Scrapy框架可以实现定时爬虫,而且可以根据我们的时间需求,方便的修改定时的时间。
1、Scrapy介绍
Scrapy是python的爬虫框架,用于抓取web站点并从页面中提取结构化的数据。任何人都可以根据需求方便的修改。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试。
2、使用Scrapy框架定时爬取
importtime fromscrapyimportcmdline defdoSth(): #把爬虫程序放在这个类里zhilian_spider是爬虫的name cmdline.execute('scrapycrawlzhilian_spider'.split()) #想几点更新,定时到几点 deftime_ti(h=17,m=54): whileTrue: now=datetime.datetime.now() #print(now.hour,now.minute) ifnow.hour==handnow.minute==m: doSth() #每隔60秒检测一次 time.sleep(60) time_ti()
3、更简单的写法
importtime importsys importos importdatetime defDingshi(): whileTrue: os.system("scrapycrawllcp")#lcp是我们爬虫的代码名字哦 time.sleep(60) Dingshi()
知识点扩展:
直接使用Timer类实例代码
importtime importos whileTrue: os.system("scrapycrawlNews") time.sleep(86400)#每隔一天运行一次24*60*60=86400s或者,使用标准库的sched模块 importsched #初始化sched模块的scheduler类 #第一个参数是一个可以返回时间戳的函数,第二个参数可以在定时未到达之前阻塞。 schedule=sched.scheduler(time.time,time.sleep) #被周期性调度触发的函数 deffunc(): os.system("scrapycrawlNews") defperform1(inc): schedule.enter(inc,0,perform1,(inc,)) func()#需要周期执行的函数 defmymain(): schedule.enter(0,0,perform1,(86400,)) if__name__=="__main__": mymain() schedule.run()#开始运行,直到计划时间队列变成空为止关于cmd的实现方法,本人在单次执行爬虫程序时使用的是 cmdline.execute("scrapycrawlNews".split())但可能因为cmdline是scrapy模块中自带的,所以定时执行时只能执行一次就退出了。
到此这篇关于python中用Scrapy实现定时爬虫的实例讲解的文章就介绍到这了,更多相关python中使用Scrapy实现定时爬虫内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!