python中用Scrapy實(shí)現(xiàn)定時(shí)爬蟲的實(shí)例講解
一般網(wǎng)站發(fā)布信息會(huì)在具體實(shí)現(xiàn)范圍內(nèi)發(fā)布,我們?cè)谶M(jìn)行網(wǎng)絡(luò)爬蟲的過程中,可以通過設(shè)置定時(shí)爬蟲,定時(shí)的爬取網(wǎng)站的內(nèi)容。使用python爬蟲框架Scrapy框架可以實(shí)現(xiàn)定時(shí)爬蟲,而且可以根據(jù)我們的時(shí)間需求,方便的修改定時(shí)的時(shí)間。
1、Scrapy介紹Scrapy是python的爬蟲框架,用于抓取web站點(diǎn)并從頁面中提取結(jié)構(gòu)化的數(shù)據(jù)。任何人都可以根據(jù)需求方便的修改。Scrapy用途廣泛,可以用于數(shù)據(jù)挖掘、監(jiān)測(cè)和自動(dòng)化測(cè)試。
2、使用Scrapy框架定時(shí)爬取import timefrom scrapy import cmdlinedef doSth(): # 把爬蟲程序放在這個(gè)類里 zhilian_spider 是爬蟲的name cmdline.execute(’scrapy crawl zhilian_spider’.split())# 想幾點(diǎn)更新,定時(shí)到幾點(diǎn)def time_ti(h=17, m=54): while True: now = datetime.datetime.now() # print(now.hour, now.minute) if now.hour == h and now.minute == m: doSth() # 每隔60秒檢測(cè)一次 time.sleep(60)time_ti()3、更簡(jiǎn)單的寫法
import timeimport sysimport osimport datetimedef Dingshi():while True:os.system('scrapy crawl lcp')#lcp是我們爬蟲的代碼名字哦time.sleep(60)Dingshi()
知識(shí)點(diǎn)擴(kuò)展:
直接使用Timer類實(shí)例代碼
import timeimport oswhile True: os.system('scrapy crawl News') time.sleep(86400) #每隔一天運(yùn)行一次 24*60*60=86400s或者,使用標(biāo)準(zhǔn)庫的sched模塊import sched#初始化sched模塊的scheduler類#第一個(gè)參數(shù)是一個(gè)可以返回時(shí)間戳的函數(shù),第二個(gè)參數(shù)可以在定時(shí)未到達(dá)之前阻塞。schedule = sched.scheduler ( time.time, time.sleep )#被周期性調(diào)度觸發(fā)的函數(shù)def func(): os.system('scrapy crawl News')def perform1(inc): schedule.enter(inc,0,perform1,(inc,)) func() # 需要周期執(zhí)行的函數(shù)def mymain(): schedule.enter(0,0,perform1,(86400,))if __name__=='__main__': mymain() schedule.run() # 開始運(yùn)行,直到計(jì)劃時(shí)間隊(duì)列變成空為止關(guān)于cmd的實(shí)現(xiàn)方法,本人在單次執(zhí)行爬蟲程序時(shí)使用的是 cmdline.execute('scrapy crawl News'.split())但可能因?yàn)閏mdline是scrapy模塊中自帶的,所以定時(shí)執(zhí)行時(shí)只能執(zhí)行一次就退出了。
到此這篇關(guān)于python中用Scrapy實(shí)現(xiàn)定時(shí)爬蟲的實(shí)例講解的文章就介紹到這了,更多相關(guān)python中使用Scrapy實(shí)現(xiàn)定時(shí)爬蟲內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. Jsp中request的3個(gè)基礎(chǔ)實(shí)踐2. Django程序的優(yōu)化技巧3. XML入門的常見問題(一)4. IntelliJ IDEA 統(tǒng)一設(shè)置編碼為utf-8編碼的實(shí)現(xiàn)5. jsp EL表達(dá)式詳解6. Django ORM實(shí)現(xiàn)按天獲取數(shù)據(jù)去重求和例子7. chat.asp聊天程序的編寫方法8. Python多線程操作之互斥鎖、遞歸鎖、信號(hào)量、事件實(shí)例詳解9. idea設(shè)置自動(dòng)導(dǎo)入依賴的方法步驟10. 怎樣才能用js生成xmldom對(duì)象,并且在firefox中也實(shí)現(xiàn)xml數(shù)據(jù)島?
