记录在scrapy中运行蜘蛛所需的总时间

时间:2012-06-28 13:09:50

标签: python scrapy

我正在使用scrapy废弃网站

我写过蜘蛛并从页面中取出所有项目并保存到csv文件中, 现在我想保存scrapy采用的total execution time来运行蜘蛛文件, 实际上,在蜘蛛执行完成后,当我们在终端时,它将显示一些结果 比如starttime, endtime等......所以现在在我的程序中我需要计算scrapy运行蜘蛛并将总时间存储在某些地方所花费的总时间......

任何人都可以通过一个例子让我知道如何做到这一点........

提前致谢...........

2 个答案:

答案 0 :(得分:4)

这可能很有用:

from scrapy.xlib.pydispatch import dispatcher
from scrapy import signals
from scrapy.stats import stats
from datetime import datetime

def handle_spider_closed(spider, reason):
    print 'Spider closed:', spider.name, stats.get_stats(spider)
    print 'Work time:', datetime.now() - stats.get_stats(spider)['start_time']


dispatcher.connect(handle_spider_closed, signals.spider_closed)

答案 1 :(得分:0)

我是一个初学者,但是我用一种更简单的方法做到了,我希望它是有道理的。

import datetime

然后声明两个全局变量,即 self.starting_time self.ending_time

在Spider类的构造函数中,将开始时间设置为 self.starting_time = datetime.datetime.now()。

在那之后,使用封闭的方法找到结束点和开始点之间的差异。 即

def closed(self, response):
   self.ending_time = datetime.datetime.now()
   duration = self.ending_time - self.starting_time
   print(duration)

由于蜘蛛在结束进程后不久就调用了close方法,因此就差不多了。