2015-06-04 13 views
6

Oldukça standart bir Scrapy projemiz var (Scrapy 0.24).Scrapy: belirli HTTP sunucu kodlarıyla yanıtları yakalayın

Ben, belirli HTTP yanıt kodları yakalamak için böyle gibi 200, 500, 502, 503, 504 vb

şey istiyorum:

class Spider(...): 

    def parse(...): 
     processes HTTP 200 

    def parse_500(...): 
     processes HTTP 500 errors 

    def parse_502(...): 
     processes HTTP 502 errors 

    ... 

bunu nasıl yapabiliriz?

cevap

9

Varsayılan olarak, Scrapy yalnızca yanıtları 200 - 300 durum kodlarıyla işler.

Let Scrapy handle 500 and 502: Sonra

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

, parse() geri aramasında, response.status kontrol edin:

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