例外(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 シグナルの文書と、 レスポンスのダウンロードの停止 トピックを参照してください。