¿Cómo obtener estadísticas de una carrera de scrapy?

Estoy ejecutando la araña de scrapy desde un archivo externo como se muestra en el ejemplo de documentos de scrapy. Quiero capturar las estadísticas proporcionadas por la API Core y almacenarlas en la tabla mysql una vez finalizado el rastreo.

from twisted.internet import reactor from scrapy.crawler import Crawler from scrapy import log, signals from test.spiders.myspider import * from scrapy.utils.project import get_project_settings from test.pipelines import MySQLStorePipeline import datetime spider = MySpider() def run_spider(spider): settings = get_project_settings() crawler = Crawler(settings) crawler.signals.connect(reactor.stop, signal=signals.spider_closed) crawler.configure() crawler.crawl(spider) crawler.start() log.start() reactor.run() mysql_insert = MySQLStorePipeline() mysql_insert.cursor.execute( 'insert into crawler_stats(sites_id, start_time,end_time,page_scraped,finish_reason) values(%s,%s,%s, %s,%s)', (1,datetime.datetime.now(),datetime.datetime.now(),100,'test')) mysql_insert.conn.commit() run_spider(spider) 

¿Cómo puedo obtener los valores de las estadísticas como start_time, end_time, pages_scraped, finish_reason en el código anterior?

Consígalos del coleccionista crawler.stats :

 stats = crawler.stats.get_stats() 

Código de ejemplo (recostackción de estadísticas en el spider_closed señales spider_closed ):

 def callback(spider, reason): stats = spider.crawler.stats.get_stats() # stats is a dictionary # write stats to the database here reactor.stop() def run_spider(spider): settings = get_project_settings() crawler = Crawler(settings) crawler.signals.connect(callback, signal=signals.spider_closed) crawler.configure() crawler.crawl(spider) crawler.start() log.start() reactor.run() run_spider(spider)