例外(Exceptions)

組み込み例外リファレンス

Scrapyに含まれるすべての例外とその使用法のリストを次に示します。

CloseSpider

exception scrapy.exceptions.CloseSpider(reason='cancelled')[ソース]

この例外は、スパイダーのクローズまたは停止を要求するスパイダーコールバックから発生する可能性があります。サポートされている引数は以下です:

パラメータ

reason (str) -- クローズの理由

例えば:

def parse_page(self, response):
    if 'Bandwidth exceeded' in response.body:
        raise CloseSpider('bandwidth_exceeded')

DontCloseSpider

exception scrapy.exceptions.DontCloseSpider[ソース]

この例外は、spider_idle シグナルハンドラーで発生させて、スパイダーが閉じないようにすることができます。

DropItem

exception scrapy.exceptions.DropItem[ソース]

アイテムの処理を停止するためにアイテム・パイプライン・ステージによって発生させる必要がある例外。 詳細については アイテム・パイプライン を参照してください。

IgnoreRequest

exception scrapy.exceptions.IgnoreRequest[ソース]

この例外は、スケジューラまたはダウンローダー・ミドルウェアによって発生し、要求を無視する必要があることを示します。

NotConfigured

exception scrapy.exceptions.NotConfigured[ソース]

一部のコンポーネントは、この例外を発生させて、無効のままにすることを示すことができます。以下のコンポーネントが含まれます:

  • 拡張機能

  • アイテム・パイプライン

  • ダウンローダー・ミドルウェア

  • スパイダー・ミドルウェア

コンポーネントの __init__ メソッドで例外を発生させる必要があります。

NotSupported

exception scrapy.exceptions.NotSupported[ソース]

この例外は、サポートされていない機能を示すために発生します。

StopDownload

バージョン 2.2 で追加.

exception scrapy.exceptions.StopDownload(fail=True)[ソース]

bytes_receivedheaders_received シグナル・ハンドラーから発生(raise)し、レスポンスのためにこれ以上バイト・データをダウンロードしないことを示します。

fail 二値論理(boolean) パラメータは、結果のレスポンスを処理するメソッドを制御します:

  • (デフォルト) fail=True の場合、リクエスト・エラーバック(errback)が呼び出されます。 レスポンス・オブジェクトは、 StopDownload 例外の response 属性として使用できます。これは、受信した Failurevalue 属性として保存されます。これは、 def errback(self, failure) として定義されたエラーバック(errback)では、 failure.value.response を介してレスポンスにアクセスできることを意味します。

  • fail=False の場合、代わりにリクエスト・コールバックが呼び出されます。

いずれ場合でも、レスポンスのボディが切り捨てられる可能性があります。ボディには、例外が発生するシグナル・ハンドラーで受信されたバイト・データを含め、例外が発生するまでに受信されたすべてのバイト・データが含まれます。 また、レスポンス・オブジェクトでは、その Response.flags 属性に "download_stopped" がセットされます。

注釈

fail はキーワード専用引数です。例えば StopDownload(False)StopDownload(True)TypeError を引き起こします。

追加情報と例については、 bytes_receivedheaders_received シグナルの文書と、 レスポンスのダウンロードの停止 トピックを参照してください。