python中用Scrapy實(shí)現(xiàn)定時(shí)爬蟲(chóng)的實(shí)例講解
一般網(wǎng)站發(fā)布信息會(huì)在具體實(shí)現(xiàn)范圍內(nèi)發(fā)布,我們?cè)谶M(jìn)行網(wǎng)絡(luò)爬蟲(chóng)的過(guò)程中,可以通過(guò)設(shè)置定時(shí)爬蟲(chóng),定時(shí)的爬取網(wǎng)站的內(nèi)容。使用python爬蟲(chóng)框架Scrapy框架可以實(shí)現(xiàn)定時(shí)爬蟲(chóng),而且可以根據(jù)我們的時(shí)間需求,方便的修改定時(shí)的時(shí)間。
1、Scrapy介紹Scrapy是python的爬蟲(chóng)框架,用于抓取web站點(diǎn)并從頁(yè)面中提取結(jié)構(gòu)化的數(shù)據(jù)。任何人都可以根據(jù)需求方便的修改。Scrapy用途廣泛,可以用于數(shù)據(jù)挖掘、監(jiān)測(cè)和自動(dòng)化測(cè)試。
2、使用Scrapy框架定時(shí)爬取import timefrom scrapy import cmdlinedef doSth(): # 把爬蟲(chóng)程序放在這個(gè)類里 zhilian_spider 是爬蟲(chóng)的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是我們爬蟲(chóng)的代碼名字哦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)庫(kù)的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() # 開(kāi)始運(yùn)行,直到計(jì)劃時(shí)間隊(duì)列變成空為止關(guān)于cmd的實(shí)現(xiàn)方法,本人在單次執(zhí)行爬蟲(chóng)程序時(shí)使用的是 cmdline.execute('scrapy crawl News'.split())但可能因?yàn)閏mdline是scrapy模塊中自帶的,所以定時(shí)執(zhí)行時(shí)只能執(zhí)行一次就退出了。
到此這篇關(guān)于python中用Scrapy實(shí)現(xiàn)定時(shí)爬蟲(chóng)的實(shí)例講解的文章就介紹到這了,更多相關(guān)python中使用Scrapy實(shí)現(xiàn)定時(shí)爬蟲(chóng)內(nèi)容請(qǐng)搜索好吧啦網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持好吧啦網(wǎng)!
相關(guān)文章:
1. SpringBoot如何接收數(shù)組參數(shù)的方法2. 使用Blazor框架實(shí)現(xiàn)在前端瀏覽器中導(dǎo)入和導(dǎo)出Excel3. javascript實(shí)現(xiàn)貪吃蛇小練習(xí)4. 解決vue 給window添加和移除resize事件遇到的坑5. ASP基礎(chǔ)知識(shí)Command對(duì)象講解6. 一文帶你徹底理解Java序列化和反序列化7. 如何從Python的cmd中獲得.py文件參數(shù)8. SSM框架整合之Spring+SpringMVC+MyBatis實(shí)踐步驟9. Python-openpyxl表格讀取寫入的案例詳解10. JavaScript實(shí)現(xiàn)留言板實(shí)戰(zhàn)案例

網(wǎng)公網(wǎng)安備