scrapy 2.3 如何訪問設(shè)置

2021-06-10 10:45 更新

在Spider中,可以通過 ?self.settings? :

class MySpider(scrapy.Spider):
    name = 'myspider'
    start_urls = ['http://example.com']

    def parse(self, response):
        print(f"Existing settings: {self.settings.attributes.keys()}")

注解

這個 ?settings? 屬性在Spider初始化后在基本Spider類中設(shè)置。如果要在初始化之前使用這些設(shè)置(例如,在Spider的 ?__init__()? 方法),您需要重寫 ?from_crawler()? 方法。

可以通過訪問 ?scrapy.crawler.Crawler.settings? 傳遞給的爬網(wǎng)程序的屬性 ?from_crawler? 擴(kuò)展、中間商和項目管道中的方法:

class MyExtension:
    def __init__(self, log_is_enabled=False):
        if log_is_enabled:
            print("log is enabled!")

    @classmethod
    def from_crawler(cls, crawler):
        settings = crawler.settings
        return cls(settings.getbool('LOG_ENABLED'))

設(shè)置對象可以像dict一樣使用(例如, ?settings['LOG_ENABLED']? ,但通常最好使用 ?Settings? 應(yīng)用程序編程接口。

內(nèi)置設(shè)置參考

以下是所有可用的零碎設(shè)置的列表,按字母順序排列,以及它們的默認(rèn)值和應(yīng)用范圍。

如果設(shè)置綁定到任何特定組件,那么范圍(如果可用)將顯示使用該設(shè)置的位置。在這種情況下,將顯示該組件的模塊,通常是擴(kuò)展、中間件或管道。它還意味著必須啟用組件才能使設(shè)置生效。

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

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號