例外(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¶
この例外は、spider_idle
シグナルハンドラーで発生させて、スパイダーが閉じないようにすることができます。
DropItem¶
アイテムの処理を停止するためにアイテム・パイプライン・ステージによって発生させる必要がある例外。 詳細については アイテム・パイプライン を参照してください。
IgnoreRequest¶
この例外は、スケジューラまたはダウンローダー・ミドルウェアによって発生し、要求を無視する必要があることを示します。
NotConfigured¶
一部のコンポーネントは、この例外を発生させて、無効のままにすることを示すことができます。以下のコンポーネントが含まれます:
拡張機能
アイテム・パイプライン
ダウンローダー・ミドルウェア
スパイダー・ミドルウェア
コンポーネントの __init__
メソッドで例外を発生させる必要があります。
StopDownload¶
バージョン 2.2 で追加.
bytes_received
や headers_received
シグナル・ハンドラーから発生(raise)し、レスポンスのためにこれ以上バイト・データをダウンロードしないことを示します。
fail
二値論理(boolean) パラメータは、結果のレスポンスを処理するメソッドを制御します:
(デフォルト)
fail=True
の場合、リクエスト・エラーバック(errback)が呼び出されます。 レスポンス・オブジェクトは、StopDownload
例外のresponse
属性として使用できます。これは、受信したFailure
のvalue
属性として保存されます。これは、def errback(self, failure)
として定義されたエラーバック(errback)では、failure.value.response
を介してレスポンスにアクセスできることを意味します。fail=False
の場合、代わりにリクエスト・コールバックが呼び出されます。
いずれ場合でも、レスポンスのボディが切り捨てられる可能性があります。ボディには、例外が発生するシグナル・ハンドラーで受信されたバイト・データを含め、例外が発生するまでに受信されたすべてのバイト・データが含まれます。 また、レスポンス・オブジェクトでは、その Response.flags
属性に "download_stopped"
がセットされます。
注釈
fail
はキーワード専用引数です。例えば StopDownload(False)
や StopDownload(True)
は TypeError
を引き起こします。
追加情報と例については、 bytes_received
や headers_received
シグナルの文書と、 レスポンスのダウンロードの停止 トピックを参照してください。