2

こんにちは私はサイトをスクレイプするためにscrapyを使用しています

私はスパイダーを作成し、すべての情報を取得して、pipeline.pyを介してcsvファイルに保存しました。

Pipeline.pyコード

class Examplepipeline(object):

    def __init__(self):
        dispatcher.connect(self.spider_opened, signal=signals.spider_opened)
        dispatcher.connect(self.spider_closed, signal=signals.spider_closed)

    def spider_opened(self, spider):
        log.msg("opened spider  %s at time %s" % (spider.name,datetime.now().strftime('%H-%M-%S')))
        self.exampledotcomCsv = csv.writer(open("csv's/%s(%s).csv"% (spider.name,datetime.now().strftime("%d/%m/%Y,%H-%M-%S")), "wb"),
                   delimiter=',', quoting=csv.QUOTE_MINIMAL)
        self.exampledotcomCsv.writerow(['field1', 'field2','field3','field4'])           

    def process_item(self, item, spider):
            log.msg("Processsing item " + item['title'], level=log.DEBUG)
            self.brandCategoryCsv.writerow([item['field1'].encode('utf-8'),
                                    [i.encode('utf-8') for i in item['field2']],
                                    item['field3'].encode('utf-8'),
                                    [i.encode('utf-8') for i in item['field4']]
                                    ])
            return item 


    def spider_closed(self, spider):
        log.msg("closed spider %s at %s" % (spider.name,datetime.now().strftime('%H-%M-%S')))

上記のコードでは取得できますが、スパイダーを閉じた後、スパイダーによって取得されたものstart time and end time of spiderを計算して表示したい ので、どうすればこの機能をspider_closedメソッドで記述できますか?total timedifference between start time and end time

これを教えてください。

4

1 に答える 1

1

なぜだめですか:

def spider_opened(self, spider):
    spider.started_on = datetime.now()
    ...

def spider_closed(self, spider):
    work_time = datetime.now() - spider.started_on
    ...
于 2012-07-06T11:19:57.650 に答える