我們爬取數據的時候,經常會希望定時運行爬蟲,一般在凌晨的時候執行,那樣掛服務器上就會減輕很大的負荷,所以我們就需要定時的任務,本文使用了scrapy框架,然後定時執行爬蟲代碼的方法。
聲明:此方法不一定是最好的方法,但是肯定是能達到效果的方法。
網上有很多的代碼介紹,最多的就是下面的方法:
import time
from scrapy.cmdline import execute
import sys
import os
import datetime
def doSth():
execute(['scrapy','crawl','lcp'])
# 想幾點更新,定時到幾點
def time_ti(h=20, m=24):
while True:
now = datetime.datetime.now()
# print(now.hour, now.minute)
if now.hour == h and now.minute == m:
doSth()
# 每隔60秒檢測一次
time.sleep(60)
doSth()
但是上面的方法執行一次就結束了,原因可能是cmdline是scrapy框架自帶的,開啓的是一個主線程,任務完成主線程撤銷,所以就執行一次就結束了,完全達不到我們的要求。
所以下面的方法是最簡單的方法。
import time
import sys
import os
import datetime
def Dingshi():
while True:
os.system("scrapy crawl lcp")#lcp是我們爬蟲的代碼名字哦
time.sleep(60)
Dingshi()
我們直接就是在Linux服務器上執行一次這個Dingshi()的方法就可以了。