as per these指示HTTP 500エラー、接続失われたエラーなどは常に再スケジューリングされていますが、403エラーが再スケジュールされた場合、または単に有効な応答として処理されたり、再試行の制限。同じ命令からも403スケジューリングで後でクロールするHTTPステータスコードを再スケジュールする方法はありますか?
:
失敗したページが掻きプロセスで収集し、クモは、すべての正規( 以外が失敗した)のページをクロールし終えた後、 の端を再スケジュールされています。再試行に失敗したページがなくなると、この ミドルウェアから信号が送信されます(retry_complete)ので、他の拡張機能では がその信号に接続できます。
何にこれらFailed Pages
指すのでしょうか? 403エラーが含まれていますか?
また、私はscrapyがHTTP 400状況に遭遇した場合、この例外が発生している見ることができます:
2015-12-07 12:33:42 [scrapy] DEBUG: Ignoring response <400 http://example.com/q?x=12>: HTTP status code is not handled or not allowed
この例外から私はそれがHTTP 400の応答は無視され、再スケジュールされていないことは明らかだと思います。
403 HTTPステータスが無視されたり、最後にクロールされるように再スケジュールされているかどうかはわかりません。 these文書に従ってHTTPステータスが403のすべての応答を再スケジュールしようとしました。ここで私はこれまで試してみましたものです:
middlewares.pyファイルで:settings.pyで
def process_response(self, request, response, spider):
if response.status == 403:
return request
else:
return response
:
RETRY_TIMES = 5
RETRY_HTTP_CODES = [500, 502, 503, 504, 400, 403, 404, 408]
私の質問は以下のとおりです。
- 何これらは
Failed Pages
ですか? 403エラーが含まれていますか? - 403エラーページのスケジュールを変更するには、
process_response
と記述する必要がありますか?または、それらは自動的に治療によって再スケジュールされますか? - どのようなタイプの例外と(HTTPコード)が治療によって再スケジュールされますか?
- 404エラーページのスケジュールを変更すると、無限ループに入るか、タイムアウトが発生してから再スケジュールが行われなくなりますか?
お返事ありがとうございます。私はかなり再試行について知っている。私の主な質問は、再スケジューリングについてです。再試行されるコードも再スケジューリングされていますか? – Rahul
私はあなたが何を意味しているのか本当に分かりませんが、再試行は再び 'Request'を起動しています。 – eLRuLL
'スパイダーがすべての通常の(失敗していない)ページのクロールを終えたら、駄目なページが掻き取りプロセスで収集され、最後に再スケジューリングされます。 '私はこの再スケジューリングについて話しています。 – Rahul