python實現scrapy定時執行爬蟲

2021-07-29 09:54:39 字數 1591 閱讀 6604

專案需要程式能夠放在超算中心定時執行,於是針對scrapy寫了乙個定時爬蟲的程式main.py,直接放在scrapy的儲存**的目錄中就能設定時間定時多次執行。

最簡單的方法:直接使用timer類

import time

import os

while true:

os.system("scrapy crawl news")

time.sleep(86400) #每隔一天執行一次 24*60*60=86400s

或者,使用標準庫的sched模組

import sched

#初始化sched模組的scheduler類

#第乙個引數是乙個可以返回時間戳的函式,第二個引數可以在定時未到達之前阻塞。

schedule = sched.scheduler ( time.time, time.sleep )

#被週期性排程觸發的函式

deffunc

(): os.system("scrapy crawl news")

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("scrapy crawl news"

.split())

但可能因為cmdline是scrapy模組中自帶的,所以定時執行時只能執行一次就退出了。小夥伴有種方法是使用

import subprocess

subprocess.popen("scrapy crawl news")

她的程式執行正常可以定時多次執行,而我的卻直接退出了,改為

from subprocess import popen

subprocess.popen("scrapy crawl news")

才正常,不知道為什麼會這樣,如果有大神可以解釋原因還請指點。反正os.systemsubprocess.popen都是pythoncmd的實現方法,可以根據需要選擇使用。

參考**:

python的sched模組和timer類

python sched模組學習

***深入學習python (六) 用sched來定時執行任務

python_cmd的各種實現方法及優劣(subprocess.popen, os.system和commands.getstatusoutput) - z…

如何基於windows實現python定時爬蟲

windows系統下使用任務計畫程式,linux下可以使用crontab命令新增自啟動計畫。這裡寫windows 10zljahrowr windows server 2016系統的設定方法。首先編寫乙個.bat指令碼。新建乙個txt,將下面三行 複製進去,main.py改成自己程式名字。保程式設計...

django apscheduler實現定時任務

準備 1.安裝 pip install django apscheduler django apscheduler,3.註冊後資料遷移 python manage.py migrate 遷移之後會生成兩張表 django apscheduler djangojob django apschedule...

Python while true實現爬蟲定時任務

記得以前的windows 任務定時是可以的正常使用的,今天試了下,發現不能正常使用了,任務計畫總是掛起。接下來記錄下python 爬蟲定時任務的幾種解決方法。今天是第一篇,後面會陸續更新。首先最容易的是while true死迴圈掛起,上 import osimport timeimport sysf...