設定

Scrapyの設定では, コア, 拡張機能, パイプライン, スパイダー自体を含むすべての Scrapy コンポーネントの動作をカスタマイズすることができます.

設定のインフラストラクチャは, コードで値を取得するために使用できる, キーと値のマッピングのグローバルな名前空間を提供します. この設定は, 以下で説明するさまざまなメカニズムによって設定できます.

この設定は, 現在アクティブなScrapyプロジェクトを選択するためのメカニズムでもあります.

使用可能なビルトイン設定のリストについては,  ビルトイン設定リファレンス を参照してください.

設定を指定する

Scrapyを使用するときは, 環境変数 SCRAPY_SETTINGS_MODULE を使用して, 設定を Scrapy に教えてください.

SCRAPY_SETTINGS_MODULE の値はPythonのパス構文でなければなりません, e.g. myproject.settings. 設定モジュールは, Pythonの インポートサーチパス 上にある必要があります.

設定を入力する

設定は, それぞれ異なる優先順位を持つ異なるメカニズムを使用しています. 以下は優先順位の高い順にリストされています:

  1. コマンドラインオプション(優先度高)
  2. スパイダーごとの設定
  3. プロジェクト設定モジュール
  4. コマンドごとのデフォルト設定
  5. デフォルトのグローバル設定(優先度低)

これら設定の優先度は内部的に処理されますが, API呼び出しを使用して手動で処理することが可能です. 設定 API を参照してください.

これらのメカニズムは, 以下でより詳細に説明します.

1. コマンドラインオプション

コマンドラインで提供される引数は, 他のオプションよりも優先されます. -s (または --set) コマンドラインオプションを使用して, 1つ(またはそれ以上)の設定を明示的に上書きすることができます.

例:

scrapy crawl myspider -s LOG_FILE=scrapy.log

2. スパイダーごとの設定

スパイダー ( スパイダー を参照) は, 独自の設定を定義して優先順位を上げることができます. これは, custom_settings 属性に設定することで可能です:

class MySpider(scrapy.Spider):
    name = 'myspider'

    custom_settings = {
        'SOME_SETTING': 'some value',
    }

3. プロジェクト設定モジュール

プロジェクト設定モジュールは, Scrapyプロジェクトの標準設定ファイルです. カスタム設定の大部分が設定されます. 標準の Scrapy プロジェクトでは, プロジェクト用に作成された settings.py ファイルの設定を追加または変更することになります.

4. コマンドごとのデフォルト設定

Scrapy ツール コマンドには独自のデフォルト設定があり, グローバルなデフォルト設定を上書きします. これらのカスタムコマンド設定は,  default_settings 属性で指定されます.

5. デフォルトのグローバル設定

グローバルなデフォルト設定は scrapy.settings.default_settings モジュールにあり, ビルトイン設定リファレンス に記載されています.

設定にアクセスする方法

スパイダーでは, 設定は self.settings で取得することができます:

class MySpider(scrapy.Spider):
    name = 'myspider'
    start_urls = ['http://example.com']

    def parse(self, response):
        print("Existing settings: %s" % self.settings.attributes.keys())

注釈

settings 属性は, スパイダーが初期化された後, ベース Spider クラスに設定されます. 初期化の前に設定を使用する場合(たとえば, スパイダーの __init__() メソッド), from_crawler() メソッドをオーバーライドする必要があります.

設定は, 拡張機能, ミドルウェアおよびアイテムパイプラインの from_crawler メソッドに渡される, クローラの scrapy.crawler.Crawler.settings 属性を介してアクセスできます.

class MyExtension(object):
    def __init__(self, log_is_enabled=False):
        if log_is_enabled:
            print("log is enabled!")

    @classmethod
    def from_crawler(cls, crawler):
        settings = crawler.settings
        return cls(settings.getbool('LOG_ENABLED'))

設定オブジェクトは dict'' (例: ``settings['LOG_ENABLED'] ) のように使用できますが, Settings API で提供されるメソッドの1つを使用して, タイプエラーを回避するために必要な形式で設定を抽出することをお勧めします.

名前を設定する理由

設定名には通常, 構成するコンポーネントの接頭辞が付いています. 例えば, 架空の robots.txt 拡張子の適切な設定名は ROBOTSTXT_ENABLED, ROBOTSTXT_OBEY, ROBOTSTXT_CACHEDIR などです.

ビルトイン設定リファレンス

ここでは, アルファベット順に使用可能なすべての Scrapy 設定のリストと, デフォルト値, 適用されるスコープが示されています.

使用可能な場合スコープは, 特定のコンポーネントに関連付けられていれば, 設定が使用されている場所を示します. その場合, そのコンポーネントのモジュール, 通常は拡張モジュール, ミドルウェアまたはパイプラインが表示されます. また, 設定を有効にするためにコンポーネントを有効にする必要があることも意味します.

AWS_ACCESS_KEY_ID

デフォルト: None

S3フィードストレージバックエンド など,   Amazon Web services のアクセスを必要とするコードで使用されるAWSアクセスキー.

AWS_SECRET_ACCESS_KEY

デフォルト: None

S3フィードストレージバックエンド など,  Amazon Web services へのアクセスを必要とするコードで使用されるAWS秘密鍵.

BOT_NAME

デフォルト: 'scrapybot'

このScrapyプロジェクトによって実装されたボットの名前(プロジェクト名とも呼ばれます). これは, デフォルトで User-Agent, ロギングに使用されます.

startproject コマンドを使用してプロジェクトを作成すると, プロジェクト名が自動的に入力されます.

CONCURRENT_ITEMS

デフォルト: 100

アイテムプロセッサ ( アイテムパイプライン とも呼ばれます) で並列処理する同時アイテムの最大数(応答あたり).

CONCURRENT_REQUESTS

デフォルト: 16

Scrapyダウンローダによって実行される並行(つまり同時の)リクエストの最大数.

CONCURRENT_REQUESTS_PER_DOMAIN

デフォルト: 8

単一のドメインに対して実行される並行(つまり同時)リクエストの最大数.

AutoThrottle 拡張機能AUTOTHROTTLE_TARGET_CONCURRENCY オプションも参照してください.

CONCURRENT_REQUESTS_PER_IP

デフォルト: 0

単一の IP に対して実行される並行(つまり同時)要求の最大数. 0以外の場合, CONCURRENT_REQUESTS_PER_DOMAIN 設定は無視され, 代わりにこの設定が使用されます. つまり, ドメインごとではなく, IPごとに並行処理の制限が適用されます.

この設定は, DOWNLOAD_DELAY 及び AutoThrottle 拡張機能: にも影響します. CONCURRENT_REQUESTS_PER_IP がゼロ以外の場合, ドメインごとではなくIPごとにダウンロード遅延が強制されます.

DEFAULT_ITEM_CLASS

デフォルト: 'scrapy.item.Item'

Scrapy shell でアイテムをインスタンス化するために使用されるデフォルトクラスです.

DEFAULT_REQUEST_HEADERS

デフォルト:

{
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en',
}

Scrapy HTTP Request に使用されるデフォルトのヘッダー. これらは, DefaultHeadersMiddleware に設定されています.

DEPTH_LIMIT

デフォルト: 0

スコープ: scrapy.spidermiddlewares.depth.DepthMiddleware

どのサイトでもクロールできる最大の深さ. ゼロの場合, 制限は課されません.

DEPTH_PRIORITY

デフォルト: 0

スコープ: scrapy.spidermiddlewares.depth.DepthMiddleware

深さに基づいてリクエストの優先度を調整するために使用される整数:

  • 0(デフォルト)の場合, 深度からの優先調整は行われません
  • 正の値は優先度を下げます. つまり, 深度の高い要求が後で処理されます. これは, 幅優先のクロール(BFO)を行うときによく使用されます
  • 負の値は優先度を増加させます. すなわち, より深い深度要求がより早く処理されます(DFO)

BFO または DFO のチューニングに関しては Scrapyは幅優先, 深さ優先どちらでクロールしますか? を参照してください.

注釈

この設定は, 他の優先度設定である REDIRECT_PRIORITY_ADJUST 及び RETRY_PRIORITY_ADJUST と比較して, 優先度を調整します.

DEPTH_STATS

デフォルト: True

スコープ: scrapy.spidermiddlewares.depth.DepthMiddleware

最大深度統計を収集するかどうか.

DEPTH_STATS_VERBOSE

デフォルト: False

スコープ: scrapy.spidermiddlewares.depth.DepthMiddleware

冗長な深さ統計を収集するかどうか. これを有効にすると, 各深さのリクエスト数が統計情報に収集されます.

DNSCACHE_ENABLED

デフォルト: True

DNSインメモリキャッシュを有効にするかどうか.

DNSCACHE_SIZE

デフォルト: 10000

DNSのインメモリキャッシュサイズ.

DNS_TIMEOUT

デフォルト: 60

DNSクエリを処理するための秒単位タイムアウト. フロートがサポートされています.

DOWNLOADER

デフォルト: 'scrapy.core.downloader.Downloader'

クロールに使用するダウンローダ.

DOWNLOADER_HTTPCLIENTFACTORY

デフォルト: 'scrapy.core.downloader.webclient.ScrapyHTTPClientFactory'

HTTP / 1.0接続( HTTP10DownloadHandler の場合)に使用する, Twisted の protocol.ClientFactory クラスを定義します.

注釈

Twisted < 11.1 を使用しない限り, HTTP/1.0 は今日めったに使われないので, この設定を無視しても問題ありません. HTTP/1.0 を使用し, http(s) スキームに応じて DOWNLOAD_HANDLERS_BASE をオーバーライドする, すなわち 'scrapy.core.downloader.handlers.http.HTTP10DownloadHandler'.

DOWNLOADER_CLIENTCONTEXTFACTORY

デフォルト: 'scrapy.core.downloader.contextfactory.ScrapyClientContextFactory'

使用する ContextFactory へのクラスパスを表します.

ContextFactory は, SSL / TLS コンテキストの Twisted の用語で, 使用するTLS / SSLプロトコルのバージョン, 証明書の検証の有無, クライアント側の認証(およびその他のさまざまなもの)の有効化を定義します.

注釈

Scrapy のデフォルトコンテキストファクトリは, リモートサーバー証明書の検証を実行しません. これは, 通常のウェブスクレーピングでは問題ありません.

リモートサーバー証明書の検証が有効になっている必要がある場合は, プラットフォームの証明書を使用してリモートエンドポイントを検証する 'scrapy.core.downloader.contextfactory.BrowserLikeContextFactory' という別のコンテキストファクトリクラスを使用することもできます. Twisted>=14.0. で使用することができます.

カスタム ContextFactory を使用する場合は, init で method パラメータを受け入れるようにしてください (これは OpenSSL.SSL メソッドの DOWNLOADER_CLIENT_TLS_METHOD のマッピングです).

DOWNLOADER_CLIENT_TLS_METHOD

デフォルト: 'TLS'

この設定を使用して, デフォルトの HTTP/1.1 ダウンローダが使用する TLS/SSL 方式をカスタマイズします.

この設定は, これらの文字列値のいずれかでなければなりません:

  • 'TLS': OpenSSLの TLS_method() (a.k.a SSLv23_method()), にマップされています. これにより, プラットフォームでサポートされている最高位から始まる プロトコルネゴシエーションが可能になります; デフォルト, 推奨
  • 'TLSv1.0': この値を指定すると, HTTPS接続はTLSバージョン1.0を使用します. Scrapy < 1.1 の動作が必要な場合にこれを設定します
  • 'TLSv1.1': TLS バージョン 1.1 を強制します
  • 'TLSv1.2': TLS バージョン 1.2 を強制します
  • 'SSLv3': SSL バージョン 3 を強制します (非推奨)

注釈

PyOpenSSL >= 0.13, Twisted >= 0.13 以上を使用することをお勧めします(出来れば Twisted> = 14.0).

DOWNLOADER_MIDDLEWARES

デフォルト: {}

あなたのプロジェクトで有効になっているダウンローダミドルウェアとその注文を含む辞書. 詳細については ダウンローダーミドルウェアの有効化 を参照してください.

DOWNLOADER_MIDDLEWARES_BASE

デフォルト:

{
    'scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware': 100,
    'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware': 300,
    'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware': 350,
    'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware': 400,
    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': 500,
    'scrapy.downloadermiddlewares.retry.RetryMiddleware': 550,
    'scrapy.downloadermiddlewares.ajaxcrawl.AjaxCrawlMiddleware': 560,
    'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware': 580,
    'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 590,
    'scrapy.downloadermiddlewares.redirect.RedirectMiddleware': 600,
    'scrapy.downloadermiddlewares.cookies.CookiesMiddleware': 700,
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 750,
    'scrapy.downloadermiddlewares.stats.DownloaderStats': 850,
    'scrapy.downloadermiddlewares.httpcache.HttpCacheMiddleware': 900,
}

Scrapyでデフォルトで有効になっているダウンローダミドルウェアを含む辞書. ローオーダーはエンジンに近く, ハイオーダーはダウンローダーに近くなっています. プロジェクトでこの設定を変更しないでください. 代わりに DOWNLOADER_MIDDLEWARES を変更してください. 詳細については, ダウンローダーミドルウェアの有効化 を参照してください.

DOWNLOADER_STATS

デフォルト: True

ダウンローダの統計情報収集を有効にするかどうか.

DOWNLOAD_DELAY

デフォルト: 0

ダウンローダが同じWebサイトから連続したページをダウンロードするまで待機する時間(秒). これは, サーバに負荷がかかることを避けるために, クロール速度を抑えるために使用できます. 10進数がサポートされています. 例:

DOWNLOAD_DELAY = 0.25    # 250 ms of delay

この設定は, RANDOMIZE_DOWNLOAD_DELAY 設定の影響を受けます(デフォルトで有効). 既定では, Scrapyは要求間の固定時間を待機しませんが, 0.5 * DOWNLOAD_DELAY から 1.5 * DOWNLOAD_DELAY までのランダムな間隔を使用します.

CONCURRENT_REQUESTS_PER_IP がゼロ以外の場合, 遅延はドメインごとではなくIPアドレスごとに適用されます.

download_delay スパイダー属性を設定することで, スパイダーごとにこの設定を変更することもできます.

DOWNLOAD_HANDLERS

デフォルト: {}

プロジェクトで有効になっているリクエストダウンローダーハンドラを含む dict. 形式のサンプルについては DOWNLOAD_HANDLERS_BASE を参照してください.

DOWNLOAD_HANDLERS_BASE

デフォルト:

{
    'file': 'scrapy.core.downloader.handlers.file.FileDownloadHandler',
    'http': 'scrapy.core.downloader.handlers.http.HTTPDownloadHandler',
    'https': 'scrapy.core.downloader.handlers.http.HTTPDownloadHandler',
    's3': 'scrapy.core.downloader.handlers.s3.S3DownloadHandler',
    'ftp': 'scrapy.core.downloader.handlers.ftp.FTPDownloadHandler',
}

デフォルトで Scrapy で有効になっているリクエストハンドラを含む dict . プロジェクトでこの設定を変更しないでください. 代わりに DOWNLOAD_HANDLERS を変更してください.

これらのダウンロードハンドラのいずれかを無効にするには, DOWNLOAD_HANDLERS の URI スキームにNoneを割り当てます. たとえば, 組み込みのFTPハンドラを無効にするには(置き換えずに), これを settings.py に記述子ます:

DOWNLOAD_HANDLERS = {
    'ftp': None,
}

DOWNLOAD_TIMEOUT

デフォルト: 180

ダウンローダーがタイムアウトするまで待機する時間(秒単位).

注釈

このタイムアウトは, download_timeout スパイダ属性と download_timeout Request.meta キーを使用したリクエストごとに設定できます.

DOWNLOAD_MAXSIZE

デフォルト: 1073741824 (1024MB)

ダウンローダがダウンロードする最大応答サイズ(バイト単位).

無効にする場合は, 0に設定します.

注釈

このサイズは, download_maxsize Request.metaキーを使用して, download_maxsize スパイダ属性とper-requestを使用してスパイダごとに設定できます.

この機能には Twisted >= 11.1 が必要です.

DOWNLOAD_WARNSIZE

デフォルト: 33554432 (32MB)

ダウンローダが警告を開始するレスポンスサイズ(バイト単位).

無効にする場合は, 0に設定します.

注釈

このサイズは, download_warnsize Request.metaキーを使用して, download_warnsize スパイダ属性およびper-requestを使用してスパイダごとに設定できます.

これには, Twisted >= 11.1 が必要です.

DUPEFILTER_CLASS

デフォルト: 'scrapy.dupefilters.RFPDupeFilter'

重複リクエストを検出してフィルタリングするために使用されるクラス.

デフォルトのフィルタ (RFPDupeFilter) は, scrapy.utils.request.request_fingerprint 関数を使用してリクエストフィンガープリントに基づいてフィルタリングします. 重複をチェックする方法を変更するには, RFPDupeFilter をサブクラス化し, request_fingerprint メソッドをオーバーライドすることができます. このメソッドは Request オブジェクトを受け入れ, そのフィンガープリント(文字列)を返す必要があります.

DUPEFILTER_DEBUG

デフォルト: False

デフォルトでは, RFPDupeFilter は最初の重複要求のみを記録します. DUPEFILTER_DEBUG を True に設定すると, すべての重複リクエストが記録されます.

EDITOR

デフォルト: 環境依存

edit マンドでスパイダーを編集するために使用するエディター. EDITOR 環境変数が設定されていると, デフォルトで使用されます. それ以外の場合, デフォルトは vi Unixシステムの場合)または IDLE エディター(Windowsの場合)になります.

EXTENSIONS

デフォルト:: {}

プロジェクトで有効になっている拡張機能と, そのオーダーを含む dict.

EXTENSIONS_BASE

デフォルト:

{
    'scrapy.extensions.corestats.CoreStats': 0,
    'scrapy.extensions.telnet.TelnetConsole': 0,
    'scrapy.extensions.memusage.MemoryUsage': 0,
    'scrapy.extensions.memdebug.MemoryDebugger': 0,
    'scrapy.extensions.closespider.CloseSpider': 0,
    'scrapy.extensions.feedexport.FeedExporter': 0,
    'scrapy.extensions.logstats.LogStats': 0,
    'scrapy.extensions.spiderstate.SpiderState': 0,
    'scrapy.extensions.throttle.AutoThrottle': 0,
}

Scrapy のデフォルトで利用可能な拡張機能とそのオーダーを含む dict . この設定には, すべての安定したビルトイン拡張機能が含まれています. そのうちのいくつかは設定によって有効にする必要があることに注意してください.

詳細については, 拡張機能ユーザーガイド 及び 使用可能な拡張機能の一覧 を参照してください.

FEED_TEMPDIR

Feed Temp ディレクトリでは, FTP フィードストレージAmazon S3 にアップロードする前に, クローラの一時ファイルを保存するカスタムフォルダを設定できます.

ITEM_PIPELINES

デフォルト: {}

使用するアイテムパイプラインとその注文を含む dict . 順序値は任意ですが, 0〜1000の範囲で定義するのが通例です. 下位の注文は高次のオーダーの前に処理されます.

例:

ITEM_PIPELINES = {
    'mybot.pipelines.validate.ValidateMyItem': 300,
    'mybot.pipelines.validate.StoreMyItem': 800,
}

ITEM_PIPELINES_BASE

デフォルト: {}

Scrapy でデフォルトで有効になっているパイプラインを含む dict . プロジェクトでこの設定を変更しないでください. 代わりに ITEM_PIPELINES を変更してください

LOG_ENABLED

デフォルト: True

ロギングを有効にするかどうか.

LOG_ENCODING

デフォルト: 'utf-8'

ロギングに使用するエンコーディング.

LOG_FILE

デフォルト: None

ログ出力に使用するファイル名. None の場合, 標準エラーが使用されます.

LOG_FORMAT

デフォルト: '%(asctime)s [%(name)s] %(levelname)s: %(message)s'

ログメッセージのフォーマット用の文字列. 使用可能なプレースホルダの一覧については, Python logging documentation を参照してください.

LOG_DATEFORMAT

デフォルト: '%Y-%m-%d %H:%M:%S'

日付/時刻の書式設定の文字列,  LOG_FORMAT%(asctime)s のプレースホルダの展開. 使用可能なディレクティブの一覧については, Python datetime documentation を参照してください.

LOG_LEVEL

デフォルト: 'DEBUG'

ログに記録する最小レベル. 使用可能なレベルは, CRITICAL, ERROR, WARNING, INFO, DEBUGです. 詳細は ロギング を参照してください.

LOG_STDOUT

デフォルト: False

True の場合, プロセスのすべての標準出力(およびエラー)がログにリダイレクトされます. たとえば, print 'hello' を実行すると, Scrapyログに表示されます.

MEMDEBUG_ENABLED

デフォルト: False

メモリデバッグを有効にするかどうか.

MEMDEBUG_NOTIFY

デフォルト: []

メモリデバッグが有効になっている場合, この設定が空でなければ, 指定されたアドレスにメモリレポートが送信されます. そうでない場合, レポートはログに書き込まれます.

例:

MEMDEBUG_NOTIFY = ['user@example.com']

MEMUSAGE_ENABLED

デフォルト: False

スコープ: scrapy.extensions.memusage

メモリ使用量の拡張を有効にして, メモリ制限を超えた場合に Scrapy プロセスをシャットダウンするかどうか. また, その場合は電子メールで通知されます.

メモリ使用量拡張機能 を参照してください.

MEMUSAGE_LIMIT_MB

デフォルト: 0

スコープ: scrapy.extensions.memusage

(MEMUSAGE_ENABLEDがTrueの場合)Scrapy をシャットダウンする前に許容される メモリの最大量(メガバイト単位). ゼロの場合, チェックは実行されません.

メモリ使用量拡張機能 を参照してください.

MEMUSAGE_CHECK_INTERVAL_SECONDS

バージョン 1.1 で追加.

デフォルト: 60.0

スコープ: scrapy.extensions.memusage

メモリ使用量拡張機能 は, MEMUSAGE_LIMIT_MB および MEMUSAGE_WARNING_MB によって設定された制限と現在のメモリ使用量を, 一定の時間間隔でチェックします.

これは, これらの間隔の長さを秒単位で設定します.

メモリ使用量拡張機能 を参照してください.

MEMUSAGE_NOTIFY_MAIL

デフォルト: False

スコープ: scrapy.extensions.memusage

モリー制限に達したことを通知する電子メールのリスト.

例:

MEMUSAGE_NOTIFY_MAIL = ['user@example.com']

メモリ使用量拡張機能 を参照してください.

MEMUSAGE_REPORT

デフォルト: False

スコープ: scrapy.extensions.memusage

各スパイダーが閉じられた後にメモリ使用量レポートを送信するかどうか.

メモリ使用量拡張機能 を参照してください.

MEMUSAGE_WARNING_MB

デフォルト: 0

スコープ: scrapy.extensions.memusage

通知する警告電子メールを送信する前に許容されるメモリの最大量(メガバイト単位). ゼロの場合, 警告は生成されません.

NEWSPIDER_MODULE

デフォルト: ''

genspider コマンドを使用して新しいスパイダーを作成する場所.

例:

NEWSPIDER_MODULE = 'mybot.spiders_dev'

RANDOMIZE_DOWNLOAD_DELAY

デフォルト: True

有効にすると, 同じWebサイトからリクエストを取得する間, Scrapyはランダムな時間 (0.5 * DOWNLOAD_DELAY から 1.5 * DOWNLOAD_DELAY の間まで) 待機します.

このランダム化は, リクエスト間の時間から統計的に有意な類似性を探し, リクエストを分析するサイトによってクローラが検出される(およびその後ブロックされる)可能性を低下させます.

ランダム化ポリシーは, wget --random-wait オプションで使用されるものと同じです.

DOWNLOAD_DELAY が 0(デフォルト)の場合, このオプションは無効です.

REACTOR_THREADPOOL_MAXSIZE

デフォルト: 10

Twisted Reactor スレッドプールサイズの最大限度. これは, さまざまな Scrapy コンポーネントで使用される汎用スレッドプールです. スレッド化された DNS リゾルバ, BlockingFeedStorage, S3 FilesStore などです. ブロッキング IO が不十分で問題が発生している場合は, この値を大きくしてください.

REDIRECT_MAX_TIMES

デフォルト: 20

要求をリダイレクトできる最大時間を定義します. この最大値の後, 要求の応答はそのまま返されます. 私達は, Firefoxのデフォルト値を同じタスクに使用しました.

REDIRECT_PRIORITY_ADJUST

デフォルト: +2

スコープ: scrapy.downloadermiddlewares.redirect.RedirectMiddleware

元のリクエストに対するリダイレクトリクエストの優先度を調整します.

  • 正の優先度調整(デフォルト)はより高い優先度を意味します.
  • 負の優先順位調整は低い優先順位を意味します.

RETRY_PRIORITY_ADJUST

デフォルト: -1

スコープ: scrapy.downloadermiddlewares.retry.RetryMiddleware

オリジナルのリクエストに対するリトライリクエストの優先度を調整する:

  • 正の優先度調整はより高い優先度を意味します.
  • 負の優先順位調整(デフォルト)は低い優先順位を意味します.

ROBOTSTXT_OBEY

デフォルト: False

スコープ: scrapy.downloadermiddlewares.robotstxt

有効にすると, Scrapy は robots.txt ポリシーを尊重します. 詳細については, RobotsTxtMiddleware を参照してください.

注釈

歴史的な理由からデフォルト値は False ですが, このオプションは scrapy startproject コマンドで生成される settings.py ファイルではデフォルトで有効になっています.

SCHEDULER

デフォルト: 'scrapy.core.scheduler.Scheduler'

クロールに使用するスケジューラ.

SCHEDULER_DEBUG

デフォルト: False

True に設定すると, 要求スケジューラに関するデバッグ情報が記録されます. 要求をディスクにシリアライズできない場合は, 現在ログに記録されます(1回のみ). Stats カウンター (scheduler/unserializable) は, これが発生する回数を追跡します.

ログのエントリ例:

1956-01-31 00:00:00+0800 [scrapy] ERROR: Unable to serialize request:
<GET http://example.com> - reason: cannot serialize <Request at 0x9a7c7ec>
(type Request)> - no more unserializable requests will be logged
(see 'scheduler/unserializable' stats counter)

SCHEDULER_DISK_QUEUE

デフォルト: 'scrapy.squeues.PickleLifoDiskQueue'

スケジューラーが使用するディスクキューのタイプ. その他の使用可能なタイプは, scrapy.squeues.PickleFifoDiskQueue, scrapy.squeues.MarshalFifoDiskQueue, scrapy.squeues.MarshalLifoDiskQueue.

SCHEDULER_MEMORY_QUEUE

デフォルト: 'scrapy.squeues.LifoMemoryQueue'

スケジューラーが使用するインメモリー・キューのタイプ. その他の使用可能なタイプは, scrapy.squeues.FifoMemoryQueue です.

SCHEDULER_PRIORITY_QUEUE

デフォルト: 'queuelib.PriorityQueue'

スケジューラーが使用する優先度キューのタイプ.

SPIDER_CONTRACTS

デフォルト:: {}

あなたのプロジェクトで有効にされたスパイダー契約を含む辞書. スパイダーのテストに使用されます. 詳細は スパイダーコントラクト を参照してください.

SPIDER_CONTRACTS_BASE

デフォルト:

{
    'scrapy.contracts.default.UrlContract' : 1,
    'scrapy.contracts.default.ReturnsContract': 2,
    'scrapy.contracts.default.ScrapesContract': 3,
}

Scrapyでデフォルトで有効になっているコントラクトを含む辞書. プロジェクトでこの設定を変更しないでください,  SPIDER_CONTRACTS を変更してください. 詳細は, スパイダーコントラクト を参照してください.

これらのコントラクトを無効にするには SPIDER_CONTRACTS のクラスパスに None を割り当ててください. 例えば, 組み込みの ScrapesContract を無効にするには, settings.py に, この様に記述します:

SPIDER_CONTRACTS = {
    'scrapy.contracts.default.ScrapesContract': None,
}

SPIDER_LOADER_CLASS

デフォルト: 'scrapy.spiderloader.SpiderLoader'

スパイダーローダー API を実装する必要があるスパイダーのロードに使用されるクラス.

SPIDER_MIDDLEWARES

デフォルト:: {}

なたのプロジェクトで利用可能なスパイダーミドルウェアとその注文を含む辞書. 詳細は スパイダーミドルウェアの有効化 を参照してください.

SPIDER_MIDDLEWARES_BASE

デフォルト:

{
    'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware': 50,
    'scrapy.spidermiddlewares.offsite.OffsiteMiddleware': 500,
    'scrapy.spidermiddlewares.referer.RefererMiddleware': 700,
    'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware': 800,
    'scrapy.spidermiddlewares.depth.DepthMiddleware': 900,
}

Scrapy でデフォルトで有効になっているスパイダーミドルウェアとそのオーダーを含む辞書. オーダーの値が低いものはエンジンに近く, 高いものははスパイダーに近くなっています. 詳細については, スパイダーミドルウェアの有効化 を参照してください.

SPIDER_MODULES

デフォルト: []

Scrapy がスパイダーを探すモジュールのリスト.

例:

SPIDER_MODULES = ['mybot.spiders_prod', 'mybot.spiders_dev']

STATS_CLASS

デフォルト: 'scrapy.statscollectors.MemoryStatsCollector'

統計コレクター API を実装する必要がある, 統計を収集するために使用するクラス.

STATS_DUMP

デフォルト: True

スパイダーが終了したときに Scrapy stats (Scrapy ログに) をダンプします.

詳細については, 統計コレクション を参照してください.

STATSMAILER_RCPTS

デフォルト: [] (empty list)

スパイダーがスクレイピングを終えた後, Scrapyの統計情報を送信します. 詳細は StatsMailer を参照してください.

TELNETCONSOLE_ENABLED

デフォルト: True

telnet console を有効にするかどうかを指定する真偽値です (拡張機能が有効な場合).

TELNETCONSOLE_PORT

デフォルト: [6023, 6073]

Telnet コンソールに使用するポート範囲. None または 0 を設定すると, 動的に割り当てられたポートが使用されます. 詳細については, Telnet コンソール を参照してください.

TEMPLATES_DIR

デフォルト: Scrapy モジュール内の templates ディレクトリ

startproject コマンドで新しいプロジェクトを作成するときにテンプレートを検索するディレクトリと, genspider コマンドで新しいスパイダーを検索するディレクトリ.

プロジェクト名は, プロジェクトサブディレクトリ内のカスタムファイルまたはディレクトリの名前と競合してはいけません.

URLLENGTH_LIMIT

デフォルト: 2083

スコープ: spidermiddlewares.urllength

クロールを許可するURLの最大長. この設定のデフォルト値の詳細については, http://www.boutell.com/newfaq/misc/urllength.html を参照してください.

USER_AGENT

デフォルト: "Scrapy/VERSION (+http://scrapy.org)"

オーバーライドされない限り, クロール時に使用されるデフォルトの User-Agent.