scrapyカスタムcommand

1768 ワード

参考:
http://www.tuicool.com/articles/UnUBbuJ。
1、commandパッケージを作成します。spiderと同レベル
2,新規ファイルcrawlall.py
同前author_='ふふふ
from scrapy.co mmands import SrapyCommmand
from scrapy.rawler import CrawlerRunner
from scrapy.utils.co nf import arglist_to_プロジェクト
class Command(SrapyCommand):
  requires_プロジェクト=True
  def syntax(self):
    return'[options]
  defショートカットdesc(self):
    return'Runs all of the spides'
  def add_options:
    ScrpyCommand.add_options(self,parser)
    parser.add_option(「-a」、dest=「spargs」、action=「apped」、default=「」、metavar=「NAME=VALE」、
              help=「set spider argment(may be repeat)」
    parser.add_option(「-o」、「--output」、metavar=「FILE」、
              help=「dump scraped items into FILE(use-for stdout)」)
    parser.add_option(「-t」、「--output-format」、metavar=「FOREMAT」、
              help=「format to use for dumping items with-o」)
  def process_options(self,args,opts):
    ScrpyCommand.process_options(self,args,opts)
    try:
      opts.spargs=arglist_to_dict(opts.spargs)
    except Value Error:
      ライセUsageError(Invalid-a value,use-a NAME=VALE)、print_help=False)
  def run(self,args,opts):
    #settings=get_プロジェクトsettings()
    spider_loader=self.crawler_process.spider_loader
    for spidame in args or spider_loader.list():
      print「******crall spidearname***」+spidearname
      self.crawler_process.crawl(spidename、**opts.spargs)
    self.crawler_process.start()
ここは主にself.crawlerを使っています。process.spider_loader.list()メソッドは、プロジェクトのすべてのspiderを取得し、self.crawler_を利用する。process.crawl運転spider
3,settings.pyに設定を追加します。
COMMANDS_MODULE = 'you_name.commands'