나는 거미 미들웨어가이 일을하기에 완벽하다고 믿습니다. 스파이더가 작업을 마자 마자 DB에 통계 및 기타 원하는 정보를 저장할 수 있습니다. 여기
초안입니다 :
from scrapy import signals
import os
class UpdateStatsMiddleware(object):
def __init__(self, crawler):
self.crawler = crawler
# register close_spider method as callback for the spider_closed signal
crawler.signals.connect(self.close_spider, signals.spider_closed)
@classmethod
def from_crawler(cls, crawler):
return cls(crawler)
def get_jobid(self):
"""Gets jobid through scrapyd's SCRAPY_JOB env variable"""
return os.environ['SCRAPY_JOB']
def close_spider(self, spider, reason):
# do your magic here...
spider.log('Finishing spider with reason: %s' % reason)
stats = self.crawler.stats.get_stats()
jobid = self.get_jobid()
self.update_job_stats(jobid, stats)
def update_job_stats(self, jobid, stats):
# do your magic here...
pass
http://scrapy.readthedocs.org/en/latest/topics/spider-middleware.html http://scrapy.readthedocs.org/en/latest/topics/signals.html
내가 scrapyd SQLite는 지원이 알고 https://github.com/scrapy/scrapyd/blob/master/scrapyd/sqlite.py 또는 이 패키지를 사용할 수 있습니다 https://pypi.python.org/pypi/scrapy-dblite/0.2.5 –
@CristianOlaru SQL 서버에 항목을 저장할 수 있습니다. 하지만 내 질문은 내가 일정 정보 및 기타 세부 사항을 저장하고 싶습니다. 제 질문을 확인하십시오 :) – Backtrack
@CristianOlaru 스케쥴 정보를 추적하고 내 scrapyd 서버를 다시 시작한 후에도 로그를 남기고 싶습니다. – Backtrack