Scrapy:捕获具有特定 HTTP 服务器代码的响应

Scrapy: catch responses with specific HTTP server codes

我们有一个非常标准的 Scrapy 项目(Scrapy 0.24)。

我想捕获特定的 HTTP 响应代码,例如 200、500、502、503、504 等

类似的东西:

class Spider(...):

    def parse(...):
        processes HTTP 200

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

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

    ...

我们该怎么做?

默认情况下,Scrapy 只处理状态码为 200-300.

的响应

Let Scrapy handle 500 and 502:

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

然后,在 parse() 回调中,检查 response.status:

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