設定¶
Scrapy設定を使用すると、コア、拡張機能、パイプライン、スパイダー自体を含むすべてのScrapyコンポーネントの動作をカスタマイズできます。
設定のインフラストラクチャは、コードが構成値を取得するために使用できるキーと値のマッピングのグローバル名前空間を提供します。設定は、以下で説明するさまざまなメカニズムを使用して設定できます。
設定は、(多くの場合)現在アクティブなScrapyプロジェクトを選択するためのメカニズムでもあります。
利用可能な組み込み設定のリストについては、 組み込みの設定リファレンス を参照してください。
設定の指定¶
あなたがScrapyを使用するときは、あなたは使用している設定を伝える必要があります。これを行うには、環境変数 SCRAPY_SETTINGS_MODULE
を使用します。
SCRAPY_SETTINGS_MODULE
の値は、Pythonパス構文である必要があります。例えば myproject.settings
です。設定モジュールはPythonのインポート検索パス(import search path)にある必要があることに注意してください。
設定の入力¶
設定は、それぞれ異なる優先順位を持つさまざまなメカニズムを使用して入力できます。 優先順位の降順でそれらのリストを示します:
コマンド・ライン・オプション(最優先)
スパイダーごとの設定
プロジェクト設定モジュール
コマンドごとのデフォルト設定
デフォルトのグローバル設定(最も優先度が低い)
これらの設定ソースの入力は内部的に処理されますが、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'))
設定オブジェクトは辞書のように使用できます(例: settings['LOG_ENABLED']
)。ただし、通常、タイプ・エラーを回避するために必要な形式で設定を抽出し、 Settings
APIで提供されるメソッドの1つを使用することをお勧めします。
名前を設定する理由¶
設定名には通常、構成するコンポーネントの接頭辞が付きます。 たとえば、架空のrobots.txt拡張子の適切な設定名は、 ROBOTSTXT_ENABLED
、 ROBOTSTXT_OBEY
、 ROBOTSTXT_CACHEDIR
などになります。
組み込みの設定リファレンス¶
以下に、利用可能なすべてのスクレイピー設定のリストをアルファベット順に、デフォルト値と適用範囲とともに示します。
使用可能な場所では、スコープは、特定のコンポーネントに関連付けられている場合、設定が使用されている場所を示します。 その場合、そのコンポーネントのモジュールは通常、拡張機能、ミドルウェア、またはパイプラインが表示されます。 また、設定を有効にするには、コンポーネントを有効にする必要があります。
AWS_ACCESS_KEY_ID¶
デフォルト: None
S3フィードストレージバックエンド など、 Amazon Web services へのアクセスを必要とするコードで使用されるAWSアクセスキー。
AWS_SECRET_ACCESS_KEY¶
デフォルト: None
S3フィード・ストレージ・バックエンド など、 Amazon Web services へのアクセスを必要とするコードで使用されるAWSシークレット・キー
AWS_ENDPOINT_URL¶
デフォルト: None
Minioやs3.scalityなど、S3のようなストレージに使用されるエンドポイントURL。 botocore
ライブラリでのみサポートされています。
AWS_USE_SSL¶
デフォルト: None
S3またはS3のようなストレージとの通信のためにSSL接続を無効にする場合は、このオプションを使用します。 デフォルトでは、SSLが使用されます。 botocore
ライブラリでのみサポートされています。
AWS_VERIFY¶
デフォルト: None
ScrapyとS3またはS3のようなストレージ間のSSL接続を検証(verify)します。デフォルトでは、SSL検証が行われます。 botocore
ライブラリでのみサポートされています。
BOT_NAME¶
デフォルト: 'scrapybot'
このScrapyプロジェクトによって実装されるボットの名前(プロジェクト名とも呼ばれます)。 これは、デフォルトでUser-Agentを構築するために使用され、ログでも使用されます。
startproject
コマンドでプロジェクトを作成すると、プロジェクト名が自動的に入力されます。
CONCURRENT_REQUESTS_PER_DOMAIN¶
デフォルト: 8
任意の単一ドメインに対して実行される並列(すなわち同時)リクエストの最大数。
AutoThrottle拡張機能 と、その AUTOTHROTTLE_TARGET_CONCURRENCY
オプションを参照して下さい。
CONCURRENT_REQUESTS_PER_IP¶
デフォルト: 0
単一のIPに対して実行される並行(すなわち同時)リクエストの最大数。 ゼロ以外の場合、 CONCURRENT_REQUESTS_PER_DOMAIN
設定は無視され、代わりにこの設定が使用されます。 つまり、並列実行制限はドメインごとではなくIPごとに適用されます。
この設定は、 DOWNLOAD_DELAY
と AutoThrottle拡張機能 にも影響します。 CONCURRENT_REQUESTS_PER_IP
がゼロ以外の場合、ダウンロード遅延はドメインごとではなくIPごとに適用されます。
DEFAULT_REQUEST_HEADERS¶
デフォルト:
{
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en',
}
Scrapy HTTPリクエストに使用されるデフォルトのヘッダー。それらは DefaultHeadersMiddleware
に取り込まれます。
DEPTH_LIMIT¶
デフォルト: 0
スコープ: scrapy.spidermiddlewares.depth.DepthMiddleware
任意のサイトでクロールできる最大深度。 ゼロの場合、制限は課されません。
DEPTH_PRIORITY¶
デフォルト: 0
スコープ: scrapy.spidermiddlewares.depth.DepthMiddleware
深さに基づいて Request
の priority
を調整するために使用される整数。
リクエストの優先度は次のように調整されます:
request.priority = request.priority - ( depth * DEPTH_PRIORITY )
深さが増加すると、 DEPTH_PRIORITY
の正の値はリクエストの優先度(BFO)を下げ、負の値はリクエストの優先度(DFO)を上げます。 Scrapyは幅(breadth)優先または深さ(depth)優先でクロールしますか? も参照してください。
注釈
この設定は、他の優先度設定 REDIRECT_PRIORITY_ADJUST
と RETRY_PRIORITY_ADJUST
と比較して、 逆の方法で 優先度を調整します。
DEPTH_STATS_VERBOSE¶
デフォルト: False
スコープ: scrapy.spidermiddlewares.depth.DepthMiddleware
詳細な統計情報を収集するかどうか。これが有効になっている場合、各深さのリクエスト数が統計に収集されます。
DOWNLOADER_HTTPCLIENTFACTORY¶
デフォルト: 'scrapy.core.downloader.webclient.ScrapyHTTPClientFactory'
( HTTP10DownloadHandler
の場合、) HTTP/1.0接続に使用する Twisted protocol.ClientFactory
クラスを定義します。
注釈
最近では HTTP/1.0 はめったに使用されないため、Twisted <11.1 を使用する場合、または 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プロトコルのバージョン、証明書の検証(verification)を行うか、クライアント側の認証を有効にするかなどを定義します。
注釈
Scrapyデフォルト・コンテキスト・ファクトリは リモート・サーバー証明書の検証を実行しません 。これは通常、Webスクレイピングに適しています。
リモート・サーバー証明書の検証を有効にする必要がある場合、Scrapyには設定可能な別のコンテキスト・ファクトリ・クラス 'scrapy.core.downloader.contextfactory.BrowserLikeContextFactory'
があり、プラットフォームの証明書を使用してリモート・エンドポイントを検証します。 これは、Twisted>=14.0 を使用する場合にのみ利用可能です 。
カスタムContextFactoryを使用する場合、その __init__
メソッドが method
パラメーター(これは OpenSSL.SSL
メソッド・マッピング DOWNLOADER_CLIENT_TLS_METHOD
です)と tls_verbose_logging'' パラメーター( ``bool
) と tls_ciphers
パラメーター( DOWNLOADER_CLIENT_TLS_CIPHERS
参照)を受け入れる事を確認して下さい。
DOWNLOADER_CLIENT_TLS_CIPHERS¶
デフォルト: 'DEFAULT'
この設定を使用して、デフォルトの HTTP/1.1 ダウンローダーが使用するTLS/SSL暗号cipher)をカスタマイズします。
設定にはOpenSSL暗号リスト形式(OpenSSL cipher list format)の文字列が含まれている必要があります。これらの暗号はクライアント暗号として使用されます。 特定のHTTPS Webサイトにアクセスするには、この設定の変更が必要になる場合があります。たとえば、弱いDHパラメーターを持つWebサイトに 'DEFAULT:!DH'
を使用しするか、または、Webサイトが要求しない場合は DEFAULT
含まれない特定の暗号を有効にする必要があります。
DOWNLOADER_CLIENT_TLS_METHOD¶
デフォルト: 'TLS'
この設定を使用して、デフォルトの HTTP/1.1 ダウンローダーが使用するTLS/SSLメソッドをカスタマイズします。
この設定は、次の文字列値のいずれかでなければなりません:
'TLS'
: これはOpenSSLのTLS_method()
(別名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.1 3 以上(可能な場合はTwisted>=14.0)を使用することをお勧めします。
DOWNLOADER_CLIENT_TLS_VERBOSE_LOGGING¶
デフォルト: False
これを True
に設定すると、HTTPS接続を確立した後、TLS接続パラメーターに関するDEBUGレベルのメッセージが有効になります。記録される情報の種類は、OpenSSLおよびpyOpenSSLのバージョンによって異なります。
この設定は、デフォルトの DOWNLOADER_CLIENTCONTEXTFACTORY
にのみ使用されます。
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
を変更してください。詳細については、 ダウンローダーミドルウェアをアクティブにする を参照してください。
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¶
デフォルト: {}
プロジェクトで有効にされたリクエスト・ダウンローダー・ハンドラーを含む辞書。 形式の例については、 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でデフォルトで有効になっているリクエスト・ダウンロード・ハンドラーを含む辞書。 プロジェクトのこの設定を変更するのではなく、代わりに 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
を使用してスパイダーごとに設定し、リクエストごとに download_maxsize
Request.metaキーを使用して設定できます。
この機能には Twisted >= 11.1. が必要です。
DOWNLOAD_WARNSIZE¶
デフォルト: 33554432
(32MB)
ダウンローダーが警告し始めるレスポンス・サイズ(バイト単位)。
無効にしたい場合は0をセットします。
注釈
download_warnsize
スパイダー属性を使用してスパイダーごとにこのサイズを設定し、 download_warnsize
Request.metaキーを使用してリクエストごとに設定できます。
この機能には Twisted >= 11.1. が必要です。
DOWNLOAD_FAIL_ON_DATALOSS¶
デフォルト: True
壊れた応答で失敗するかどうか、つまり、宣言された Content-Length
がサーバーによって送信されたコンテンツと一致しないか、チャンクされた応答が適切に終了しませんでした。 True
の場合、これらのレスポンスは ResponseFailed([_DataLoss])
エラーを発生させます。 False
の場合、これらのレスポンスはパス・スルーされ、フラグ dataloss
がレスポンスに追加されます。すなわち、response.flagsの 'dataloss'
は True
です。
オプションで、これは download_fail_on_dataloss
Request.metaキーを False
に使用することで、リクエストごとに設定できます。
注釈
サーバーの設定ミスからネットワークエラー、データ破損まで、いくつかの状況下で、レスポンスの破損、またはデータ損失エラーが発生する場合があります。 部分的なコンテンツや不完全なコンテンツが含まれている可能性があることを考慮して、壊れたレスポンスを処理することが理にかなっているかどうかを判断するのはユーザーの責任です。本設定が True
に設定されていて、かつ RETRY_ENABLED
が True
に設定されている場合、 ResponseFailed([_DataLoss])
の失敗は通常どおり再試行されます。
DUPEFILTER_CLASS¶
デフォルト: 'scrapy.dupefilters.RFPDupeFilter'
重複したリクエストを検出およびフィルタリングするために使用されるクラス。
デフォルト( RFPDupeFilter
)は scrapy.utils.request.request_fingerprint
関数を使用してリクエストのフィンガー・プリントに基づいてフィルターします。重複のチェック方法を変更するには、 RFPDupeFilter
をサブクラス化し、その request_fingerprint
メソッドをオーバーライドします。このメソッドは、scrapy Request
オブジェクトを受け入れ、そのフィンガー・プリント(文字列)を返す必要があります。
DUPEFILTER_CLASS
を 'scrapy.dupefilters.BaseDupeFilter'
に設定することで、重複したリクエストのフィルタリングを無効にできます。ただし、クロール・ループに入る可能性があるため、これには十分注意してください。通常、フィルタリングしない特定の Request
で dont_filter
パラメーターを True
に設定することをお勧めします。
DUPEFILTER_DEBUG¶
デフォルト: False
デフォルトでは、 RFPDupeFilter
は最初の重複リクエストのみを記録します。 DUPEFILTER_DEBUG
を True
に設定すると、重複するすべてのリクエストがログに記録されます。
EDITOR¶
デフォルト: vi
(Unixシステムの場合)、またはIDLEエディター(Windowsの場合)
edit
コマンドでスパイダーを編集するために使用するエディター。さらに、 EDITOR
環境変数が設定されている場合、 edit
コマンドはデフォルト設定よりもそれを優先します。
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でデフォルトで使用可能な拡張機能とその順序を含む辞書。この設定には、すべての安定した組み込み拡張機能が含まれています。それらのいくつかは設定によって有効にする必要があることに留意してください。
詳細については、 拡張機能ユーザーガイド および 利用可能な拡張機能のリスト を参照してください。
FEED_TEMPDIR¶
Feed Temp dirでは、 FTPフィード・ストレージ と Amazon S3 でアップロードする前に、クローラーの一時ファイルを保存するカスタム・フォルダーを設定できます。
FTP_PASSWORD¶
デフォルト: "guest"
Request
メタに "ftp_password"
がない場合にFTP接続に使用するパスワード。
注釈
RFC 1635 を意訳すると、匿名FTPにはパスワード "guest" または自分の電子メールアドレスを使用するのが一般的ですが、一部のFTPサーバーは、ユーザーの電子メールアドレスを明示的に要求し、 "guest" パスワードでのログインを許可しません。
ITEM_PIPELINES¶
デフォルト: {}
使用するアイテム・パイプラインとその順序を含む辞書。 順序の値は任意ですが、0〜1000の範囲で定義するのが一般的です。 低いオーダーは高いオーダーの前に処理されます。
例:
ITEM_PIPELINES = {
'mybot.pipelines.validate.ValidateMyItem': 300,
'mybot.pipelines.validate.StoreMyItem': 800,
}
ITEM_PIPELINES_BASE¶
デフォルト: {}
Scrapyでデフォルトで有効になっているパイプラインを含む辞書。プロジェクトでこの設定を変更することは決してせず、代わりに ITEM_PIPELINES
を変更してください。
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 です。詳細については、ロギング(logging) を参照してください。
LOG_STDOUT¶
デフォルト: False
True
の場合、処理のすべての標準出力(およびエラー)がログにリダイレクトされます。 たとえば、 print('hello')
の場合、Scrapyログに表示されます。
MEMDEBUG_NOTIFY¶
デフォルト: []
メモリ・デバッグが有効になっている場合、この設定が空でない場合、指定されたアドレスにメモリレポートが送信されます。そうでない場合、レポートはログに書き込まれます。
例:
MEMDEBUG_NOTIFY = ['user@example.com']
MEMUSAGE_ENABLED¶
デフォルト: True
スコープ: scrapy.extensions.memusage
メモリ使用量拡張機能を有効にするかどうか。 この拡張機能は、プロセスが使用するピークメモリを追跡します(統計に書き込みます)。また、オプションで、メモリ制限を超えたときにScrapyプロセスをシャットダウンし( MEMUSAGE_LIMIT_MB
を参照)、それが発生したときに電子メールで通知することができます( MEMUSAGE_NOTIFY_MAIL
を参照)。
メモリ使用量の拡張機能 参照。
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_WARNING_MB¶
デフォルト: 0
スコープ: scrapy.extensions.memusage
通知する警告メールを送信する前に許可するメモリの最大量(メガバイト単位)。ゼロの場合、警告は生成されません。
NEWSPIDER_MODULE¶
デフォルト: ''
genspider
コマンドを使用して新しいスパイダーを作成するモジュール。
例:
NEWSPIDER_MODULE = 'mybot.spiders_dev'
RANDOMIZE_DOWNLOAD_DELAY¶
デフォルト: True
有効にすると、Scrapyはランダムな時間(0.5 * DOWNLOAD_DELAY
)から(1.5 * DOWNLOAD_DELAY
)の間待機し、同じWebサイトからリクエストを取得します。
このランダム化により、リクエストを分析し、リクエスト間の時間の統計的に有意な類似性を探しているサイトによってクローラーが検出される(そしてその後ブロックされる)機会が減少します。
ランダム化ポリシーは、 wget の --random-wait
オプションで使用されるものと同じです。
DOWNLOAD_DELAY
がゼロ(デフォルト)の場合、このオプションは効果がありません。
REACTOR_THREADPOOL_MAXSIZE¶
デフォルト: 10
Twistedリアクター・スレッド・プール・サイズの最大制限。 これは、さまざまなScrapyコンポーネントで使用される一般的な多目的スレッド・プールです。スレッドDNSリゾルバー、BlockingFeedStorage、S3FilesStoreなどがあります。ブロッキング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ファイルでデフォルトで有効になっています。
ROBOTSTXT_PARSER¶
デフォルト: 'scrapy.robotstxt.PythonRobotParser'
robots.txt
ファイルの解析に使用するパーサー・バックエンド。詳細については、 RobotsTxtMiddleware を参照してください。
ROBOTSTXT_USER_AGENT¶
デフォルト: None
robots.txtファイルでの照合に使用するユーザー・エージェント文字列。 None
の場合、リクエストで送信するUser-Agentヘッダーまたは USER_AGENT
設定は、(この順序で、)robots.txtファイルで使用するユーザー・エージェントを決定するために使用されます。
SCHEDULER_DEBUG¶
デフォルト: False
True
に設定すると、リクエスト・スケジューラに関するデバッグ情報が記録されます。 現在、リクエストをディスクにシリアル化できない場合にログに記録されます(1回のみ)。 統計カウンター(scheduler/unserializable
)は、これが発生した回数を追跡します。
ログのエントリの例:
1956-01-31 00:00:00+0800 [scrapy.core.scheduler] 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¶
デフォルト: 'scrapy.pqueues.ScrapyPriorityQueue'
スケジューラが使用する優先度キューのタイプ。 別の利用可能なタイプは scrapy.pqueues.DownloaderAwarePriorityQueue
です。 多数の異なるドメインを並行してクロールする場合、scrapy.pqueues.DownloaderAwarePriorityQueue
は scrapy.pqueues.ScrapyPriorityQueue
よりも適切に機能します。しかし、現在 scrapy.pqueues.DownloaderAwarePriorityQueue
は CONCURRENT_REQUESTS_PER_IP
と一緒には機能しません。
SPIDER_CONTRACTS¶
デフォルト:: {}
プロジェクトで有効にされたスパイダー・コントラクトを含む辞書。スパイダーのテストに使用されます。 詳細については、 スパイダー コントラクト を参照してください。
SPIDER_CONTRACTS_BASE¶
デフォルト:
{
'scrapy.contracts.default.UrlContract' : 1,
'scrapy.contracts.default.ReturnsContract': 2,
'scrapy.contracts.default.ScrapesContract': 3,
}
Scrapyでデフォルトで有効になっているScrapyコントラクトを含む辞書。プロジェクトでこの設定を変更することは決してせず、代わりに SPIDER_CONTRACTS
を変更してください。詳細については、 スパイダー コントラクト を参照してください。
SPIDER_CONTRACTS
でクラス・パスに None
を割り当てることで、これらのコントラクトを無効にできます。たとえば、組み込みの ScrapesContract
を無効にするには、これを settings.py
に配置します:
SPIDER_CONTRACTS = {
'scrapy.contracts.default.ScrapesContract': None,
}
SPIDER_LOADER_CLASS¶
デフォルト: 'scrapy.spiderloader.SpiderLoader'
SpiderLoader API を実装する必要があるスパイダーのロードに使用されるクラス。
SPIDER_LOADER_WARN_ONLY¶
バージョン 1.3.3 で追加.
デフォルト: False
デフォルトでは、Scrapyが SPIDER_MODULES
からスパイダー・クラスをインポートしようとすると、 ImportError
例外があると大声で怒られます。けれども、 SPIDER_LOADER_WARN_ONLY = True
を設定することで、この例外を黙らせて単純な警告に変えることができます。
注釈
いくつかの scrapyコマンド は、実際にはスパイダー・クラスをロードする必要がないため、この設定を True
に設定して実行します(つまり、警告のみを発行し、失敗しません): scrapy runspider
、 scrapy settings
、 scrapy startproject
、 scrapy version
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 を実装する必要がある統計情報の収集に使用するクラス。
STATSMAILER_RCPTS¶
デフォルト: []
(空リスト)
スパイダーがスクレイピングを完了した後、スクレイピーの統計を送信します。 詳細については、 StatsMailer
を参照してください。
TELNETCONSOLE_PORT¶
デフォルト: [6023, 6073]
telnetコンソールに使用するポート範囲。 None
または 0
に設定すると、動的に割り当てられたポートが使用されます。 詳細については、 Telnetコンソール を参照してください。
TEMPLATES_DIR¶
デフォルト: Scrapyモジュール内の templates
ディレクトリ
startproject
コマンドで新しいプロジェクトを作成し、 genspider
コマンドで新しいスパイダーを作成するときにテンプレートを探すディレクトリ。
プロジェクト名は、 project
サブディレクトリ内のカスタム・ファイルまたはディレクトリの名前と競合してはいけません。
URLLENGTH_LIMIT¶
デフォルト: 2083
スコープ: spidermiddlewares.urllength
クロールされたURLを許可する最大URL長。 この設定のデフォルト値の詳細については、 https://boutell.com/newfaq/misc/urllength.html を参照してください。
USER_AGENT¶
デフォルト: "Scrapy/VERSION (+https://scrapy.org)"
オーバーライドされない限り、クロール時に使用するデフォルトのUser-Agent。このユーザー・エージェントは、 ROBOTSTXT_USER_AGENT
設定が None
であり、リクエストに指定されたUser-Agentヘッダーが指定されていない場合、 RobotsTxtMiddleware
によっても使用されます。