1. 程式人生 > 程式設計 >python中用Scrapy實現定時爬蟲的例項講解

python中用Scrapy實現定時爬蟲的例項講解

一般網站釋出資訊會在具體實現範圍內釋出,我們在進行網路爬蟲的過程中,可以通過設定定時爬蟲,定時的爬取網站的內容。使用python爬蟲框架Scrapy框架可以實現定時爬蟲,而且可以根據我們的時間需求,方便的修改定時的時間。

1、Scrapy介紹

Scrapy是python的爬蟲框架,用於抓取web站點並從頁面中提取結構化的資料。任何人都可以根據需求方便的修改。Scrapy用途廣泛,可以用於資料探勘、監測和自動化測試。

2、使用Scrapy框架定時爬取

import time
from scrapy import cmdline
def doSth():
  # 把爬蟲程式放在這個類裡 zhilian_spider 是爬蟲的name
  cmdline.execute('scrapy crawl zhilian_spider'.split())
# 想幾點更新,定時到幾點
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秒檢測一次
    time.sleep(60)
time_ti()

3、更簡單的寫法

import time
import sys
import os
import datetime
def Dingshi():
while True:
os.system("scrapy crawl lcp")#lcp是我們爬蟲的程式碼名字哦
time.sleep(60)
Dingshi()

知識點擴充套件:

直接使用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 )
#被週期性排程觸發的函式
def func():
 os.system("scrapy crawl News")
def perform1(inc):
 schedule.enter(inc,perform1,(inc,))
 func() # 需要週期執行的函式
def mymain():
 schedule.enter(0,(86400,))
if __name__=="__main__":
 mymain()
 schedule.run() # 開始執行,直到計劃時間佇列變成空為止關於cmd的實現方法,本人在單次執行爬蟲程式時使用的是 
cmdline.execute("scrapy crawl News".split())但可能因為cmdline是scrapy模組中自帶的,所以定時執行時只能執行一次就退出了。

到此這篇關於python中用Scrapy實現定時爬蟲的例項講解的文章就介紹到這了,更多相關python中使用Scrapy實現定時爬蟲內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!