Scrapy: captura respuestas con códigos de servidor HTTP específicos

Tenemos un proyecto Scrapy bastante estándar (Scrapy 0.24).

Me gustaría capturar códigos de respuesta HTTP específicos, como 200, 500, 502, 503, 504, etc.

Algo como eso:

class Spider(...): def parse(...): processes HTTP 200 def parse_500(...): processes HTTP 500 errors def parse_502(...): processes HTTP 502 errors ... 

¿Cómo podemos hacer eso?

De forma predeterminada, Scrapy solo maneja las respuestas con los códigos de estado 200300 .

Deje que Scrapy maneje 500 y 502 :

 class Spider(...): handle_httpstatus_list = [500, 502] 

Luego, en la callback parse() , verifique response.status :

 def parse(response): if response.status == 500: # logic here elif response.status == 502: # logic here