scrapy 2.3 高級自定義

2021-06-10 17:20 更新

因為scrapy使用stdlib日志記錄模塊,所以可以使用stdlib日志記錄的所有功能自定義日志記錄。

例如,假設(shè)您正在抓取一個返回許多HTTP 404和500響應(yīng)的網(wǎng)站,并且您希望隱藏像這樣的所有消息:

2016-12-16 22:00:06 [scrapy.spidermiddlewares.httperror] INFO: Ignoring
response <500 http://quotes.toscrape.com/page/1-34/>: HTTP status code
is not handled or not allowed

首先要注意的是一個記錄器名稱-它在括號中: ?[scrapy.spidermiddlewares.httperror]? . 如果你得到公正 ?[scrapy]? 然后 ?LOG_SHORT_NAMES? 可能設(shè)置為true;設(shè)置為false并重新運(yùn)行爬網(wǎng)。

接下來,我們可以看到消息具有信息級別。為了隱藏它,我們應(yīng)該為 ?scrapy.spidermiddlewares.httperror? 高于信息;信息后的下一級是警告??梢赃@樣做,例如在蜘蛛的 ?__init__? 方法:

import logging
import scrapy


class MySpider(scrapy.Spider):
    # ...
    def __init__(self, *args, **kwargs):
        logger = logging.getLogger('scrapy.spidermiddlewares.httperror')
        logger.setLevel(logging.WARNING)
        super().__init__(*args, **kwargs)

如果您再次運(yùn)行此蜘蛛,則從 ?scrapy.spidermiddlewares.httperror? 日志記錄器將消失。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號