タイミング爬虫類(続き)

8676 ワード

前のブログで2つのタイミングの方法について言及しました:1、timeを使う.sleepは直接遅延処理を行う.欠点:爬虫類を運転するのにかかる時間のずれがある.2、crontabを使ってタイミングを決める.良い方法です.ログを設定して、いつでも問題が発生しているかどうかを確認できます.前回のブログのアドレス:タイミング爬虫類1今回は主に前回の2つ目の方法を補足し、他の方法を紹介します.
crontabタイミング
前回ではshファイルを書き込み,タイミングタスクでスクリプトファイルをタイミングで呼び出す方式を採用した.実際には、スクリプトで2回呼び出す必要がなく、タイミングタスクで爬虫類を直接実行することもできます.必要なのは、爬虫類のディレクトリに切り替えるコマンドが必要です.
* * * * * cd project && envs/env/bin/scrapy crawl spider  >> logs/spider.log 

pythonのパスは必ず指摘してください.ここではscrapyを使用しているので、ここではscrapyのパスを使用しています.後ろにはカスタムログファイルのディレクトリと名前があります.前の「*」はタイミングの設定を表していますが、
*    *    *    *    *
|    |    |    |    |
|    |    |    |    +-----        (0 - 7) (     0)
|    |    |    +----------    (1 - 12) 
|    |    +---------------          (1 - 31)
|    +--------------------    (0 - 23)
+-------------------------    (0 - 59)

具体的な設定はcrotabの詳細を見ることができます:Linux crontabコマンド、ここでは詳細な説明があり、例もあります.
次に、今回は他の方法を紹介します.可視化されたインタフェースを望んでいる人もいるので、ここでは2つの方法を紹介します.
scrapydとspiderkeeperの使用
spiderkeeperのインタフェースは比較的きれいですが、scrapydをインストールする必要があります.具体的にどのように使うかは紹介しませんが、ネット上では多くの構成と使用チュートリアルがあります.scrapydの構成は簡単で、ページは粗末です.spiderkeeperの構成は比較的複雑で、ページがきれいです(推奨).それから注意するのは:ポートの設定、空きポートを選んで、自分で覚えておけばいいので、5000ポートは必要ありません.Windowsもlinuxも使えて便利です
その他のタイミング方法
これらのタイミング方法はみんな少し複雑だと思っているかもしれませんが、前回紹介した簡単なtime.sleepには時間バイアスの問題がある.面倒な場合は、タイミングファイルを書く方法を直接採用することができます.
import time


def timing():
    while True:
        time_now = time.strftime("%H", time.localtime())  #   
        print(time_now)
        if time_now == "04":  #            
            cmdline.execute("scrapy crawl spider".split())
        else
        	time.sleep(2)
        	continue
if __name__ == "__main__":
    timing()

現在の時間を取得する方法によってばらつきを低減する.せいぜい2秒のずれ