Scrapy:使用特定的HTTP服务器代码捕获响应

Spa*_*man 9 python scrapy web-scraping scrapy-spider

我们有一个非常标准的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

    ...
Run Code Online (Sandbox Code Playgroud)

我们怎么做?

ale*_*cxe 12

默认情况下,Scrapy仅处理具有状态代码的响应200- 300.

让Scrapy处理500502:

class Spider(...):
    handle_httpstatus_list = [500, 502]
Run Code Online (Sandbox Code Playgroud)

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

def parse(response):
    if response.status == 500:
        # logic here
    elif response.status == 502:
        # logic here
Run Code Online (Sandbox Code Playgroud)

  • 假设蜘蛛网中有多个解析函数。在每个解析函数中添加状态条件似乎不太合适。有更好的方法吗? (2认同)