2013-10-07 3 views
0

Scrapy версии 0.19ScrapyDeprecationWaring: `` искатель `` команды по умолчанию устарел и будет удален. Используйте `метод create_crawler` для создания экземпляра Краулеров

Я использую код на этой странице (Run multiple scrapy spiders at once using scrapyd). Когда я бегу scrapy allcrawl, я получил

ScrapyDeprecationWaring: Command's default `crawler` is deprecated and will be removed. Use `create_crawler` method to instantiate crawlers 

Вот код:

from scrapy.command import ScrapyCommand 
import urllib 
import urllib2 
from scrapy import log 

class AllCrawlCommand(ScrapyCommand): 

    requires_project = True 
    default_settings = {'LOG_ENABLED': False} 

    def short_desc(self): 
     return "Schedule a run for all available spiders" 

    def run(self, args, opts): 
     url = 'http://localhost:6800/schedule.json' 
     for s in self.crawler.spiders.list(): #this line raise the warning 
      values = {'project' : 'YOUR_PROJECT_NAME', 'spider' : s} 
      data = urllib.urlencode(values) 
      req = urllib2.Request(url, data) 
      response = urllib2.urlopen(req) 
      log.msg(response) 

Как исправить DeprecationWarning?

Благодаря

ответ

1

Использование:

crawler = self.crawler_process.create_crawler() 
+0

Он бросает AttributeError: объект 'CrawlerProcess' не имеет атрибута 'create_crawler' в Scrapy 1.0.3. Как это исправить? – Ashish

+0

@Ashish Паук-загрузчик выставляется на 'self.crawler_process.spider_loader', поэтому вы можете вызвать' .list() 'непосредственно на этом объекте. – Rolando

Смежные вопросы