Scrapy爬蟲入門教程 Settings(設(shè)置)

設(shè)置

Scrapy設(shè)置允許您自定義所有Scrapy組件的行為骂因,包括核心灼卢,擴(kuò)展绍哎,管道和爬蟲本身。

設(shè)置的基礎(chǔ)結(jié)構(gòu)提供了鍵值映射的全局命名空間鞋真,代碼可以使用它從中提取配置值蛇摸。可以通過不同的機(jī)制來填充設(shè)置灿巧,這將在下面描述赶袄。

這些設(shè)置也是選擇當(dāng)前活動(dòng)Scrapy項(xiàng)目的機(jī)制(如果您有很多)。

有關(guān)可用內(nèi)置設(shè)置的列表抠藕,請(qǐng)參閱:內(nèi)置設(shè)置參考饿肺。

指定設(shè)置

當(dāng)你使用Scrapy,你必須告訴它你使用哪些設(shè)置盾似。您可以通過使用環(huán)境變量來執(zhí)行此操作SCRAPY_SETTINGS_MODULE敬辣。

SCRAPY_SETTINGS_MODULE應(yīng)該在Python路徑語法中,例如 myproject.settings零院。請(qǐng)注意溉跃,設(shè)置模塊應(yīng)該在Python 導(dǎo)入搜索路徑上

填充設(shè)置

可以使用不同的機(jī)制來填充設(shè)置告抄,每個(gè)機(jī)制具有不同的優(yōu)先級(jí)撰茎。這里是按優(yōu)先級(jí)降序排列的列表:

  1. 命令行選項(xiàng)(最高優(yōu)先級(jí))
  2. 每個(gè)爬蟲的設(shè)置
  3. 項(xiàng)目設(shè)置模塊
  4. 每命令的默認(rèn)設(shè)置
  5. 默認(rèn)全局設(shè)置(優(yōu)先級(jí)較低)

這些設(shè)置源的數(shù)量在內(nèi)部處理,但可以使用API??調(diào)用進(jìn)行手動(dòng)處理打洼。請(qǐng)參閱 設(shè)置API主題以供參考龄糊。

這些機(jī)制在下面更詳細(xì)地描述。

1.命令行選項(xiàng)

命令行提供的參數(shù)是最優(yōu)先的參數(shù)募疮,覆蓋任何其他選項(xiàng)炫惩。您可以使用-s(或--set)命令行選項(xiàng)顯式覆蓋一個(gè)(或多個(gè))設(shè)置。

例:

scrapy crawl myspider -s LOG_FILE=scrapy.log

2.每個(gè)爬蟲的設(shè)置

爬蟲(請(qǐng)參閱爬蟲章節(jié)以供參考)可以定義自己的設(shè)置阿浓,這些設(shè)置將優(yōu)先并覆蓋項(xiàng)目他嚷。他們可以通過設(shè)置custom_settings屬性來實(shí)現(xiàn):

class MySpider(scrapy.Spider):
    name = 'myspider'

    custom_settings = {
        'SOME_SETTING': 'some value',
    }

3.項(xiàng)目設(shè)置模塊

項(xiàng)目設(shè)置模塊是Scrapy項(xiàng)目的標(biāo)準(zhǔn)配置文件,它將填充大多數(shù)自定義設(shè)置芭毙。對(duì)于標(biāo)準(zhǔn)的Scrapy項(xiàng)目筋蓖,這意味著您將添加或更改settings.py為您的項(xiàng)目創(chuàng)建的文件中的設(shè)置。

4.每命令的默認(rèn)設(shè)置

每個(gè)Scrapy工具命令都可以有自己的默認(rèn)設(shè)置稿蹲,覆蓋全局默認(rèn)設(shè)置扭勉。這些自定義命令設(shè)置default_settings在命令類的屬性中指定。

5.默認(rèn)全局設(shè)置

全局默認(rèn)值位于scrapy.settings.default_settings 模塊中苛聘,并記錄在內(nèi)置設(shè)置參考部分中涂炎。

如何訪問設(shè)置

在爬蟲中,設(shè)置可通過self.settings以下方式獲得:

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

    def parse(self, response):
        print("Existing settings: %s" % self.settings.attributes.keys())

注意

settings爬蟲初始化后的屬性是在基類爬蟲設(shè)置设哗。如果你想在初始化之前使用設(shè)置(例如唱捣,在你的爬蟲的__init__()方法),你需要覆蓋該 from_crawler()方法网梢。

可以scrapy.crawler.Crawler.settings 通過傳遞到from_crawler擴(kuò)展震缭,中間件和項(xiàng)目管道中的方法的爬網(wǎng)程序的屬性訪問設(shè)置:

class MyExtension(object):
    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è)置對(duì)象可以像dict(例如, settings['LOG_ENABLED'])一樣使用战虏,但通常首選使用SettingsAPI 提供的方法之一拣宰,以您需要的格式提取設(shè)置党涕,以避免類型錯(cuò)誤。

設(shè)置名稱的原因

設(shè)置名稱通常以它們配置的組件為前綴巡社。例如膛堤,對(duì)于一個(gè)虛構(gòu)的robots.txt分機(jī)正確的設(shè)置的名稱將是 ROBOTSTXT_ENABLEDROBOTSTXT_OBEY晌该,ROBOTSTXT_CACHEDIR等肥荔。

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

以下是所有可用Scrapy設(shè)置的列表,按字母順序朝群,以及其默認(rèn)值和適用范圍燕耿。

范圍(如果可用)顯示設(shè)置在哪里使用,如果它綁定到任何特定組件姜胖。在這種情況下誉帅,將顯示該組件的模塊,通常是擴(kuò)展谭期,中間件或管道堵第。這也意味著必須啟用組件才能使設(shè)置具有任何效果。

AWS_ACCESS_KEY_ID

默認(rèn): None

由需要訪問Amazon Web服務(wù)的代碼使用的AWS訪問密鑰隧出,例如S3源存儲(chǔ)后端踏志。

AWS_SECRET_ACCESS_KEY

默認(rèn): None

由需要訪問Amazon Web服務(wù)的代碼使用的AWS密鑰,例如S3源存儲(chǔ)后端胀瞪。

BOT_NAME

默認(rèn): 'scrapybot'

此Scrapy項(xiàng)目實(shí)施的bot的名稱(也稱為項(xiàng)目名稱)针余。這將用于默認(rèn)情況下構(gòu)造User-Agent,也用于日志記錄凄诞。

當(dāng)您使用startproject命令創(chuàng)建項(xiàng)目時(shí)圆雁,它會(huì)自動(dòng)填充您的項(xiàng)目名稱。

CONCURRENT_ITEMS

默認(rèn): 100

在項(xiàng)處理器(也稱為項(xiàng)目管道)中并行處理的并發(fā)項(xiàng)目的最大數(shù)量(每個(gè)響應(yīng))帆谍。

CONCURRENT_REQUESTS

默認(rèn): 16

將由Scrapy下載程序執(zhí)行的并發(fā)(即同時(shí))請(qǐng)求的最大數(shù)量伪朽。

CONCURRENT_REQUESTS_PER_DOMAIN

默認(rèn): 8

將對(duì)任何單個(gè)域執(zhí)行的并發(fā)(即同時(shí))請(qǐng)求的最大數(shù)量。

參見:AutoThrottle擴(kuò)展及其 AUTOTHROTTLE_TARGET_CONCURRENCY選項(xiàng)汛蝙。

CONCURRENT_REQUESTS_PER_IP

默認(rèn): 0

將對(duì)任何單個(gè)IP執(zhí)行的并發(fā)(即同時(shí))請(qǐng)求的最大數(shù)量烈涮。如果非零,CONCURRENT_REQUESTS_PER_DOMAIN則忽略該 設(shè)置窖剑,而改為使用此設(shè)置坚洽。換句話說,并發(fā)限制將應(yīng)用于每個(gè)IP西土,而不是每個(gè)域斤寇。

此設(shè)置也會(huì)影響DOWNLOAD_DELAYAutoThrottle擴(kuò)展:如果CONCURRENT_REQUESTS_PER_IP 非零凄鼻,下載延遲是強(qiáng)制每IP拭宁,而不是每個(gè)域。

DEFAULT_ITEM_CLASS

默認(rèn): 'scrapy.item.Item'

將用于在Scrapy shell中實(shí)例化項(xiàng)的默認(rèn)類般甲。

DEFAULT_REQUEST_HEADERS

默認(rèn):

{
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en',
}

用于Scrapy HTTP請(qǐng)求的默認(rèn)標(biāo)頭。他們居住在 DefaultHeadersMiddleware庐舟。

DEPTH_LIMIT

默認(rèn): 0

范圍: scrapy.spidermiddlewares.depth.DepthMiddleware

允許抓取任何網(wǎng)站的最大深度欣除。如果為零,則不施加限制挪略。

DEPTH_PRIORITY

默認(rèn): 0

范圍: scrapy.spidermiddlewares.depth.DepthMiddleware

用于根據(jù)深度調(diào)整請(qǐng)求優(yōu)先級(jí)的整數(shù):

如果為零(默認(rèn)),則不從深度進(jìn)行優(yōu)先級(jí)調(diào)整
正值將降低優(yōu)先級(jí)滔岳,即杠娱,較高深度請(qǐng)求將被稍后處理 ; 這通常用于做廣度優(yōu)先爬網(wǎng)(BFO)
負(fù)值將增加優(yōu)先級(jí),即谱煤,較高深度請(qǐng)求將被更快地處理(DFO)
參見:Scrapy是否以廣度優(yōu)先或深度優(yōu)先順序爬行摊求?關(guān)于調(diào)整BFO或DFO的Scrapy。

注意

此設(shè)置以與其他優(yōu)先級(jí)設(shè)置 和相反的方式調(diào)整優(yōu)先級(jí)刘离。REDIRECT_PRIORITY_ADJUSTRETRY_PRIORITY_ADJUST

DEPTH_STATS

默認(rèn): True

范圍: scrapy.spidermiddlewares.depth.DepthMiddleware

是否收集最大深度統(tǒng)計(jì)室叉。

DEPTH_STATS_VERBOSE

默認(rèn): False

范圍: scrapy.spidermiddlewares.depth.DepthMiddleware

是否收集詳細(xì)的深度統(tǒng)計(jì)信息。如果啟用此選項(xiàng)硫惕,則在統(tǒng)計(jì)信息中收集每個(gè)深度的請(qǐng)求數(shù)茧痕。

DNSCACHE_ENABLED

默認(rèn): True

是否啟用DNS內(nèi)存緩存。

DNSCACHE_SIZE

默認(rèn): 10000

DNS內(nèi)存緩存大小恼除。

DNS_TIMEOUT

默認(rèn): 60

以秒為單位處理DNS查詢的超時(shí)踪旷。支持浮點(diǎn)。

DOWNLOADER

默認(rèn): 'scrapy.core.downloader.Downloader'

用于抓取的下載器豁辉。

DOWNLOADER_HTTPCLIENTFACTORY

默認(rèn): 'scrapy.core.downloader.webclient.ScrapyHTTPClientFactory'

定義protocol.ClientFactory 用于HTTP / 1.0連接(for HTTP10DownloadHandler)的Twisted 類令野。

注意

HTTP / 1.0現(xiàn)在很少使用,所以你可以安全地忽略這個(gè)設(shè)置徽级,除非你使用Twisted <11.1气破,或者如果你真的想使用HTTP / 1.0和覆蓋DOWNLOAD_HANDLERS_BASE相應(yīng)的http(s)方案,即到 'scrapy.core.downloader.handlers.http.HTTP10DownloadHandler'餐抢。

DOWNLOADER_CLIENTCONTEXTFACTORY

默認(rèn): 'scrapy.core.downloader.contextfactory.ScrapyClientContextFactory'

表示要使用的ContextFactory的類路徑现使。

這里,“ContextFactory”是用于SSL / TLS上下文的Twisted術(shù)語弹澎,定義要使用的TLS / SSL協(xié)議版本朴下,是否執(zhí)行證書驗(yàn)證,或者甚至啟用客戶端驗(yàn)證(以及各種其他事情)苦蒿。

注意

Scrapy默認(rèn)上下文工廠不執(zhí)行遠(yuǎn)程服務(wù)器證書驗(yàn)證殴胧。這通常對(duì)于網(wǎng)絡(luò)刮削是很好的。

如果您需要啟用遠(yuǎn)程服務(wù)器證書驗(yàn)證,Scrapy還有另一個(gè)上下文工廠類团滥,您可以設(shè)置竿屹, 'scrapy.core.downloader.contextfactory.BrowserLikeContextFactory'使用平臺(tái)的證書來驗(yàn)證遠(yuǎn)程端點(diǎn)。 僅當(dāng)使用Twisted> = 14.0時(shí)灸姊,此選項(xiàng)才可用拱燃。

如果你使用一個(gè)自定義的ContextFactory,確保它接受一個(gè)method 參數(shù)在init(這是OpenSSL.SSL方法映射DOWNLOADER_CLIENT_TLS_METHOD)力惯。

DOWNLOADER_CLIENT_TLS_METHOD

默認(rèn): 'TLS'

使用此設(shè)置可自定義默認(rèn)HTTP / 1.1下載程序使用的TLS / SSL方法碗誉。

此設(shè)置必須是以下字符串值之一:

  • 'TLS':映射到OpenSSL TLS_method()(aka SSLv23_method()),允許協(xié)議協(xié)商父晶,從平臺(tái)支持的最高開始; 默認(rèn)哮缺,推薦
  • 'TLSv1.0':此值強(qiáng)制HTTPS連接使用TLS版本1.0; 如果你想要Scrapy <1.1的行為,設(shè)置這個(gè)
  • 'TLSv1.1':強(qiáng)制TLS版本1.1
  • 'TLSv1.2':強(qiáng)制TLS版本1.2
  • 'SSLv3':強(qiáng)制SSL版本3(不推薦)

注意

我們建議您使用PyOpenSSL> = 0.13和Twisted> = 0.13或以上(如果可以甲喝,Twisted> = 14.0)尝苇。

DOWNLOADER_MIDDLEWARES

默認(rèn):: {}

包含在您的項(xiàng)目中啟用的下載器中間件及其順序的字典。有關(guān)更多信息埠胖,請(qǐng)參閱激活下載器中間件糠溜。

DOWNLOADER_MIDDLEWARES_BASE

默認(rèn):

{
    'scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware': 100,
    'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware': 300,
    'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware': 350,
    'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware': 400,
    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': 500,
    'scrapy.downloadermiddlewares.retry.RetryMiddleware': 550,
    'scrapy.downloadermiddlewares.ajaxcrawl.AjaxCrawlMiddleware': 560,
    'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware': 580,
    'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 590,
    'scrapy.downloadermiddlewares.redirect.RedirectMiddleware': 600,
    'scrapy.downloadermiddlewares.cookies.CookiesMiddleware': 700,
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 750,
    'scrapy.downloadermiddlewares.stats.DownloaderStats': 850,
    'scrapy.downloadermiddlewares.httpcache.HttpCacheMiddleware': 900,
}

包含Scrapy中默認(rèn)啟用的下載器中間件的字典。低訂單更靠近發(fā)動(dòng)機(jī)直撤,高訂單更接近下載器非竿。您不應(yīng)該在項(xiàng)目中修改此設(shè)置,DOWNLOADER_MIDDLEWARES而應(yīng)修改 谊惭。有關(guān)更多信息汽馋,請(qǐng)參閱 激活下載器中間件

DOWNLOADER_STATS

默認(rèn): True

是否啟用下載器統(tǒng)計(jì)信息收集圈盔。

DOWNLOAD_DELAY

默認(rèn): 0

下載器在從同一網(wǎng)站下載連續(xù)頁面之前應(yīng)等待的時(shí)間(以秒為單位)豹芯。這可以用于限制爬行速度,以避免擊中服務(wù)器太難驱敲。支持小數(shù)铁蹈。例:

DOWNLOAD_DELAY = 0.25    # 250 ms of delay

此設(shè)置也受RANDOMIZE_DOWNLOAD_DELAY 設(shè)置(默認(rèn)情況下啟用)的影響。默認(rèn)情況下众眨,Scrapy不會(huì)在請(qǐng)求之間等待固定的時(shí)間量握牧,而是使用0.5 * DOWNLOAD_DELAY和1.5 * 之間的隨機(jī)間隔DOWNLOAD_DELAY

當(dāng)CONCURRENT_REQUESTS_PER_IP為非零時(shí)娩梨,每個(gè)IP地址而不是每個(gè)域強(qiáng)制執(zhí)行延遲沿腰。

您還可以通過設(shè)置download_delay spider屬性來更改每個(gè)爬蟲的此設(shè)置。

DOWNLOAD_HANDLERS

默認(rèn): {}

包含在您的項(xiàng)目中啟用的請(qǐng)求下載器處理程序的dict狈定。參見DOWNLOAD_HANDLERS_BASE示例格式颂龙。

DOWNLOAD_HANDLERS_BASE

默認(rèn):

{ 
    'file' : 'scrapy.core.downloader.handlers.file.FileDownloadHandler' 习蓬,
    'http' : 'scrapy.core.downloader.handlers.http.HTTPDownloadHandler' ,
    'https' : 'scrapy.core.downloader.handlers措嵌。 http.HTTPDownloadHandler' 躲叼,
    's3' : 'scrapy.core.downloader.handlers.s3.S3DownloadHandler' ,
    'ftp' : 'scrapy.core.downloader.handlers.ftp.FTPDownloadHandler' 企巢,
}

包含Scrapy中默認(rèn)啟用的請(qǐng)求下載處理程序的字典枫慷。您不應(yīng)該在項(xiàng)目中修改此設(shè)置,DOWNLOAD_HANDLERS而應(yīng)修改 浪规。

您可以通過在其中None分配URI方案來禁用這些下載處理程序DOWNLOAD_HANDLERS或听。例如,要禁用內(nèi)置的FTP處理程序(無替換)罗丰,請(qǐng)將其放置在settings.py

DOWNLOAD_HANDLERS = {
    'ftp': None,
}

DOWNLOAD_TIMEOUT

默認(rèn): 180

下載器在超時(shí)前等待的時(shí)間量(以秒為單位)神帅。

注意

可以使用download_timeout Spider屬性和每個(gè)請(qǐng)求使用download_timeout Request.meta鍵為每個(gè)爬蟲設(shè)置此超時(shí)。

DOWNLOAD_MAXSIZE

默認(rèn)值:1073741824(1024MB)

下載器將下載的最大響應(yīng)大忻鹊帧(以字節(jié)為單位)。

如果要禁用它設(shè)置為0元镀。

注意

可以使用download_maxsize Spider屬性和每個(gè)請(qǐng)求使用download_maxsize Request.meta鍵為每個(gè)爬蟲設(shè)置此大小绍填。

此功能需要Twisted> = 11.1。

DOWNLOAD_WARNSIZE

默認(rèn)值:33554432(32MB)

下載程序?qū)㈤_始警告的響應(yīng)大衅芤伞(以字節(jié)為單位)讨永。

如果要禁用它設(shè)置為0。

注意

可以使用download_warnsize Spider屬性和每個(gè)請(qǐng)求使用download_warnsize Request.meta鍵為每個(gè)爬蟲設(shè)置此大小遇革。

此功能需要Twisted> = 11.1卿闹。

DUPEFILTER_CLASS

默認(rèn): 'scrapy.dupefilters.RFPDupeFilter'

用于檢測(cè)和過濾重復(fù)請(qǐng)求的類。

默認(rèn)(RFPDupeFilter)過濾器基于請(qǐng)求指紋使用該scrapy.utils.request.request_fingerprint函數(shù)萝快。為了改變重復(fù)檢查的方式锻霎,你可以子類化RFPDupeFilter并重載它的request_fingerprint方法。這個(gè)方法應(yīng)該接受scrapy Request對(duì)象并返回其指紋(一個(gè)字符串)揪漩。

DUPEFILTER_DEBUG

默認(rèn): False

默認(rèn)情況下旋恼,RFPDupeFilter只記錄第一個(gè)重復(fù)的請(qǐng)求。設(shè)置DUPEFILTER_DEBUGTrue將使其記錄所有重復(fù)的請(qǐng)求奄容。

EDITOR

默認(rèn)值:取決于環(huán)境

用于使用edit命令編輯爬蟲的編輯器冰更。它默認(rèn)為EDITOR環(huán)境變量,如果設(shè)置昂勒。否則蜀细,它默認(rèn)為vi(在Unix系統(tǒng)上)或IDLE編輯器(在Windows上)。

EXTENSIONS

默認(rèn):: {}

包含項(xiàng)目中啟用的擴(kuò)展名及其順序的字典戈盈。

EXTENSIONS_BASE

默認(rèn):

{
    'scrapy.extensions.corestats.CoreStats': 0,
    'scrapy.extensions.telnet.TelnetConsole': 0,
    'scrapy.extensions.memusage.MemoryUsage': 0,
    'scrapy.extensions.memdebug.MemoryDebugger': 0,
    'scrapy.extensions.closespider.CloseSpider': 0,
    'scrapy.extensions.feedexport.FeedExporter': 0,
    'scrapy.extensions.logstats.LogStats': 0,
    'scrapy.extensions.spiderstate.SpiderState': 0,
    'scrapy.extensions.throttle.AutoThrottle': 0,
}

包含默認(rèn)情況下在Scrapy中可用的擴(kuò)展名及其順序的字典奠衔。此設(shè)置包含所有穩(wěn)定的內(nèi)置擴(kuò)展。請(qǐng)記住,其中一些需要通過設(shè)置啟用涣觉。

有關(guān)詳細(xì)信息痴荐,請(qǐng)參閱擴(kuò)展程序用戶指南可用擴(kuò)展列表

FEED_TEMPDIR

Feed Temd dir允許您在使用FTP源存儲(chǔ)和 Amazon S3上傳之前設(shè)置自定義文件夾以保存搜尋器臨時(shí)文件官册。

ITEM_PIPELINES

默認(rèn): {}

包含要使用的項(xiàng)目管道及其順序的字典生兆。順序值是任意的,但通常將它們定義在0-1000范圍內(nèi)膝宁。較低訂單處理較高訂單前鸦难。

例:

ITEM_PIPELINES = {
    'mybot.pipelines.validate.ValidateMyItem': 300,
    'mybot.pipelines.validate.StoreMyItem': 800,
}

ITEM_PIPELINES_BASE

默認(rèn): {}

包含Scrapy中默認(rèn)啟用的管道的字典。您不應(yīng)該在項(xiàng)目中修改此設(shè)置员淫,ITEM_PIPELINES而應(yīng)修改合蔽。

LOG_ENABLED

默認(rèn): True

是否啟用日志記錄。

LOG_ENCODING

默認(rèn): 'utf-8'

用于記錄的編碼介返。

LOG_FILE

默認(rèn): None

用于記錄輸出的文件名拴事。如果None,將使用標(biāo)準(zhǔn)誤差圣蝎。

LOG_FORMAT

默認(rèn): '%(asctime)s [%(name)s] %(levelname)s: %(message)s'

用于格式化日志消息的字符串刃宵。有關(guān)可用占位符的完整列表,請(qǐng)參閱Python日志記錄文檔徘公。

LOG_DATEFORMAT

默認(rèn): '%Y-%m-%d %H:%M:%S'

用于格式化日期/時(shí)間的字符串牲证,占位符的%(asctime)s擴(kuò)展LOG_FORMAT。有關(guān)可用指令的完整列表关面,請(qǐng)參閱Python datetime文檔坦袍。

LOG_LEVEL

默認(rèn): 'DEBUG'

記錄的最低級(jí)別〉忍可用級(jí)別為:CRITICAL捂齐,ERRORWARNING澈驼,INFO辛燥,DEBUG。有關(guān)詳細(xì)信息缝其,請(qǐng)參閱日志挎塌。

LOG_STDOUT

默認(rèn): False

如果True,您的進(jìn)程的所有標(biāo)準(zhǔn)輸出(和錯(cuò)誤)將被重定向到日志内边。例如榴都,如果它將出現(xiàn)在Scrapy日志中。print 'hello'

LOG_SHORT_NAMES

默認(rèn): False

如果True漠其,日志將僅包含根路徑嘴高。如果設(shè)置為竿音,False 則它顯示負(fù)責(zé)日志輸出的組件

MEMDEBUG_ENABLED

默認(rèn): False

是否啟用內(nèi)存調(diào)試。

MEMDEBUG_NOTIFY

默認(rèn): []

當(dāng)啟用內(nèi)存調(diào)試時(shí)拴驮,如果此設(shè)置不為空春瞬,則會(huì)將內(nèi)存報(bào)告發(fā)送到指定的地址,否則報(bào)告將寫入日志套啤。

例:

MEMDEBUG_NOTIFY = ['user@example.com']

MEMUSAGE_ENABLED

默認(rèn): False

范圍: scrapy.extensions.memusage

是否啟用內(nèi)存使用擴(kuò)展宽气,當(dāng)超過內(nèi)存限制時(shí)關(guān)閉Scrapy進(jìn)程,并在發(fā)生這種情況時(shí)通過電子郵件通知潜沦。

請(qǐng)參閱內(nèi)存使用擴(kuò)展萄涯。

MEMUSAGE_LIMIT_MB

默認(rèn): 0

范圍: scrapy.extensions.memusage

在關(guān)閉Scrapy之前允許的最大內(nèi)存量(以兆字節(jié)為單位)(如果MEMUSAGE_ENABLEDTrue)。如果為零唆鸡,則不執(zhí)行檢查涝影。

請(qǐng)參閱內(nèi)存使用擴(kuò)展

MEMUSAGE_CHECK_INTERVAL_SECONDS

新版本1.1争占。

默認(rèn): 60.0

范圍: scrapy.extensions.memusage

內(nèi)存使用擴(kuò)展 檢查當(dāng)前內(nèi)存使用情況燃逻,相對(duì)于限制由設(shè)置 MEMUSAGE_LIMIT_MBMEMUSAGE_WARNING_MB在固定的時(shí)間間隔。

這將設(shè)置這些間隔的長度(以秒為單位)臂痕。

請(qǐng)參閱內(nèi)存使用擴(kuò)展唆樊。

MEMUSAGE_NOTIFY_MAIL

默認(rèn): False

范圍: scrapy.extensions.memusage

要達(dá)到內(nèi)存限制時(shí)通知的電子郵件列表。

例:

MEMUSAGE_NOTIFY_MAIL = ['user@example.com']

請(qǐng)參閱內(nèi)存使用擴(kuò)展刻蟹。

MEMUSAGE_REPORT

默認(rèn): False

范圍: scrapy.extensions.memusage

是否在每個(gè)爬蟲關(guān)閉后發(fā)送內(nèi)存使用報(bào)告。

請(qǐng)參閱內(nèi)存使用擴(kuò)展嘿辟。

MEMUSAGE_WARNING_MB

默認(rèn): 0

范圍: scrapy.extensions.memusage

在發(fā)送警告電子郵件通知之前舆瘪,要允許的最大內(nèi)存量(以兆字節(jié)為單位)。如果為零红伦,則不會(huì)產(chǎn)生警告英古。

NEWSPIDER_MODULE

默認(rèn): ''

模塊在哪里使用genspider命令創(chuàng)建新的爬蟲。

例:

NEWSPIDER_MODULE = 'mybot.spiders_dev'

RANDOMIZE_DOWNLOAD_DELAY

默認(rèn): True

如果啟用昙读,Scrapy會(huì)在從同一網(wǎng)站獲取請(qǐng)求時(shí)等待隨機(jī)時(shí)間(介于0.5 * DOWNLOAD_DELAY和1.5 *之間DOWNLOAD_DELAY)召调。

該隨機(jī)化降低了由分析請(qǐng)求的站點(diǎn)檢測(cè)(并隨后阻塞)爬行器的機(jī)會(huì),所述站點(diǎn)在它們的請(qǐng)求之間的時(shí)間內(nèi)尋找統(tǒng)計(jì)上顯著的相似性蛮浑。

隨機(jī)化策略與wget --random-wait選項(xiàng)使用的策略相同唠叛。

如果DOWNLOAD_DELAY為零(默認(rèn)),此選項(xiàng)不起作用沮稚。

REACTOR_THREADPOOL_MAXSIZE

默認(rèn): 10

Twisted Reactor線程池大小的上限艺沼。這是各種Scrapy組件使用的常見多用途線程池。線程DNS解析器蕴掏,BlockingFeedStorage障般,S3FilesStore僅舉幾個(gè)例子调鲸。如果您遇到阻塞IO不足的問題,請(qǐng)?jiān)黾哟酥怠?/p>

REDIRECT_MAX_TIMES

默認(rèn): 20

定義請(qǐng)求可重定向的最長時(shí)間挽荡。在此最大值之后藐石,請(qǐng)求的響應(yīng)被原樣返回。我們對(duì)同一個(gè)任務(wù)使用Firefox默認(rèn)值定拟。

REDIRECT_PRIORITY_ADJUST

默認(rèn): +2

范圍: scrapy.downloadermiddlewares.redirect.RedirectMiddleware

相對(duì)于原始請(qǐng)求調(diào)整重定向請(qǐng)求優(yōu)先級(jí):

  • 正優(yōu)先級(jí)調(diào)整(默認(rèn))意味著更高的優(yōu)先級(jí)于微。
  • 負(fù)優(yōu)先級(jí)調(diào)整意味著較低優(yōu)先級(jí)。

RETRY_PRIORITY_ADJUST

默認(rèn): -1

范圍: scrapy.downloadermiddlewares.retry.RetryMiddleware

調(diào)整相對(duì)于原始請(qǐng)求的重試請(qǐng)求優(yōu)先級(jí):

  • 正優(yōu)先級(jí)調(diào)整意味著更高的優(yōu)先級(jí)办素。
  • 負(fù)優(yōu)先級(jí)調(diào)整(默認(rèn))表示較低優(yōu)先級(jí)角雷。

ROBOTSTXT_OBEY

默認(rèn): False

范圍: scrapy.downloadermiddlewares.robotstxt

如果啟用,Scrapy會(huì)尊重robots.txt政策性穿。有關(guān)詳細(xì)信息勺三,請(qǐng)參閱 RobotsTxtMiddleware

注意

雖然默認(rèn)值是False由于歷史原因需曾,默認(rèn)情況下在settings.py文件中通過命令生成此選項(xiàng)吗坚。scrapy startproject

SCHEDULER

默認(rèn): 'scrapy.core.scheduler.Scheduler'

用于爬網(wǎng)的調(diào)度程序。

SCHEDULER_DEBUG

默認(rèn): False

設(shè)置True將記錄有關(guān)請(qǐng)求調(diào)度程序的調(diào)試信息呆万。如果請(qǐng)求無法序列化到磁盤商源,則當(dāng)前日志(僅一次)。Stats counter(scheduler/unserializable)跟蹤發(fā)生的次數(shù)谋减。

日志中的示例條目:

1956-01-31 00:00:00+0800 [scrapy.core.scheduler] ERROR: Unable to serialize request:
<GET http://example.com> - reason: cannot serialize <Request at 0x9a7c7ec>
(type Request)> - no more unserializable requests will be logged
(see 'scheduler/unserializable' stats counter)

SCHEDULER_DISK_QUEUE

默認(rèn): 'scrapy.squeues.PickleLifoDiskQueue'

將由調(diào)度程序使用的磁盤隊(duì)列的類型牡彻。其它可用的類型有 scrapy.squeues.PickleFifoDiskQueuescrapy.squeues.MarshalFifoDiskQueue出爹, scrapy.squeues.MarshalLifoDiskQueue庄吼。

SCHEDULER_MEMORY_QUEUE

默認(rèn): 'scrapy.squeues.LifoMemoryQueue'

調(diào)度程序使用的內(nèi)存中隊(duì)列的類型。其他可用類型是: scrapy.squeues.FifoMemoryQueue严就。

SCHEDULER_PRIORITY_QUEUE

默認(rèn): 'queuelib.PriorityQueue'

調(diào)度程序使用的優(yōu)先級(jí)隊(duì)列的類型总寻。

SPIDER_CONTRACTS

默認(rèn):: {}

包含在項(xiàng)目中啟用的爬蟲契約的dict,用于測(cè)試爬蟲梢为。有關(guān)更多信息渐行,請(qǐng)參閱爬蟲合同

SPIDER_CONTRACTS_BASE

默認(rèn):

{
    'scrapy.contracts.default.UrlContract' : 1,
    'scrapy.contracts.default.ReturnsContract': 2,
    'scrapy.contracts.default.ScrapesContract': 3,
}

包含Scrapy中默認(rèn)啟用的scrapy合約的dict铸董。您不應(yīng)該在項(xiàng)目中修改此設(shè)置祟印,SPIDER_CONTRACTS 而應(yīng)修改。有關(guān)更多信息袒炉,請(qǐng)參閱爬蟲合同旁理。

您可以通過None將其中的類路徑指定為禁用任何這些合同SPIDER_CONTRACTS。例如我磁,要禁用內(nèi)置 ScrapesContract孽文,將此放在您的settings.py

SPIDER_CONTRACTS = {
    'scrapy.contracts.default.ScrapesContract': None,
}

SPIDER_LOADER_CLASS

默認(rèn): 'scrapy.spiderloader.SpiderLoader'

將用于加載爬蟲程序的類驻襟,它必須實(shí)現(xiàn) SpiderLoader API

SPIDER_LOADER_WARN_ONLY

新版本1.3.3芋哭。

默認(rèn): False

默認(rèn)情況下沉衣,當(dāng)scrapy嘗試從中導(dǎo)入爬蟲類時(shí)SPIDER_MODULES,如果有任何ImportError異常减牺,它將大聲失敗豌习。但是你可以選擇沉默此異常,并通過設(shè)置將其變成一個(gè)簡單的警告拔疚。SPIDER_LOADER_WARN_ONLY = True

注意

有些scrapy命令使用此設(shè)置運(yùn)行True 已經(jīng)(即他們只會(huì)發(fā)出警告并不會(huì)失敺事 ),因?yàn)樗麄儗?shí)際上并不需要加載爬蟲類的工作: scrapy runspider, scrapy settings, scrapy startproject, scrapy version.

SPIDER_MIDDLEWARES

默認(rèn):: {}

包含在您的項(xiàng)目中啟用的爬蟲中間件的字典及其順序稚失。有關(guān)更多信息栋艳,請(qǐng)參閱激活爬蟲中間件。

SPIDER_MIDDLEWARES_BASE

默認(rèn):

{
    'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware': 50,
    'scrapy.spidermiddlewares.offsite.OffsiteMiddleware': 500,
    'scrapy.spidermiddlewares.referer.RefererMiddleware': 700,
    'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware': 800,
    'scrapy.spidermiddlewares.depth.DepthMiddleware': 900,
}

包含在Scrapy中默認(rèn)啟用的爬蟲中間件的字典及其順序句各。低訂單更靠近發(fā)動(dòng)機(jī)吸占,高訂單更接近爬蟲。有關(guān)更多信息凿宾,請(qǐng)參閱激活爬蟲中間件矾屯。

SPIDER_MODULES
默認(rèn): []

Scrapy將尋找爬蟲的模塊列表。

例:

SPIDER_MODULES = ['mybot.spiders_prod', 'mybot.spiders_dev']

STATS_CLASS

默認(rèn): 'scrapy.statscollectors.MemoryStatsCollector'

用于收集統(tǒng)計(jì)信息的類初厚,誰必須實(shí)現(xiàn) Stats Collector API件蚕。

STATS_DUMP
默認(rèn): True

一旦爬蟲完成,轉(zhuǎn)儲(chǔ)Scrapy統(tǒng)計(jì)(到Scrapy日志)产禾。

更多信息請(qǐng)參閱:統(tǒng)計(jì)數(shù)據(jù)收集骤坐。

STATSMAILER_RCPTS

默認(rèn):( []空列表)

爬蟲完成刮擦后發(fā)送Scrapy stats。查看 StatsMailer更多信息下愈。

TELNETCONSOLE_ENABLED

默認(rèn): True

布爾值,指定是否 啟用telnet控制臺(tái)(如果其擴(kuò)展名也啟用)蕾久。

TELNETCONSOLE_PORT

默認(rèn): [6023, 6073]

用于telnet控制臺(tái)的端口范圍势似。如果設(shè)置為None或0,則使用動(dòng)態(tài)分配的端口僧著。有關(guān)詳細(xì)信息履因,請(qǐng)參閱 telnet控制臺(tái)

TEMPLATES_DIR

默認(rèn)值:templates dir里面的scrapy模塊

使用startproject命令和新爬蟲創(chuàng)建新項(xiàng)目時(shí)使用命令查找模板的目錄 genspider 盹愚。

項(xiàng)目名稱不得與子目錄中的自定義文件或目錄的名稱沖突project栅迄。

URLLENGTH_LIMIT

默認(rèn): 2083

范圍: spidermiddlewares.urllength

允許抓取網(wǎng)址的最大網(wǎng)址長度。有關(guān)此設(shè)置的默認(rèn)值的詳細(xì)信息皆怕,請(qǐng)參閱http://www.boutell.com/newfaq/misc/urllength.html

USER_AGENT

默認(rèn): "Scrapy/VERSION (+http://scrapy.org)"

檢索時(shí)使用的默認(rèn)用戶代理毅舆,除非被覆蓋西篓。

其他地方記錄的設(shè)置:

以下設(shè)置在其他地方記錄,請(qǐng)檢查每個(gè)具體案例憋活,了解如何啟用和使用它們岂津。

  • AJAXCRAWL_ENABLED
  • AUTOTHROTTLE_DEBUG
  • AUTOTHROTTLE_ENABLED
  • AUTOTHROTTLE_MAX_DELAY
  • AUTOTHROTTLE_START_DELAY
  • AUTOTHROTTLE_TARGET_CONCURRENCY
  • CLOSESPIDER_ERRORCOUNT
  • CLOSESPIDER_ITEMCOUNT
  • CLOSESPIDER_PAGECOUNT
  • CLOSESPIDER_TIMEOUT
  • COMMANDS_MODULE
  • COMPRESSION_ENABLED
  • COOKIES_DEBUG
  • COOKIES_ENABLED
  • FEED_EXPORTERS
  • FEED_EXPORTERS_BASE
  • FEED_EXPORT_ENCODING
  • FEED_EXPORT_FIELDS
  • FEED_FORMAT
  • FEED_STORAGES
  • FEED_STORAGES_BASE
  • FEED_STORE_EMPTY
  • FEED_URI
  • FILES_EXPIRES
  • FILES_RESULT_FIELD
  • FILES_STORE
  • FILES_STORE_S3_ACL
  • FILES_URLS_FIELD
  • HTTPCACHE_ALWAYS_STORE
  • HTTPCACHE_DBM_MODULE
  • HTTPCACHE_DIR
  • HTTPCACHE_ENABLED
  • HTTPCACHE_EXPIRATION_SECS
  • HTTPCACHE_GZIP
  • HTTPCACHE_IGNORE_HTTP_CODES
  • HTTPCACHE_IGNORE_MISSING
  • HTTPCACHE_IGNORE_RESPONSE_CACHE_CONTROLS
  • HTTPCACHE_IGNORE_SCHEMES
  • HTTPCACHE_POLICY
  • HTTPCACHE_STORAGE
  • HTTPERROR_ALLOWED_CODES
  • HTTPERROR_ALLOW_ALL
  • HTTPPROXY_AUTH_ENCODING
  • IMAGES_EXPIRES
  • IMAGES_MIN_HEIGHT
  • IMAGES_MIN_WIDTH
  • IMAGES_RESULT_FIELD
  • IMAGES_STORE
  • IMAGES_STORE_S3_ACL
  • IMAGES_THUMBS
  • IMAGES_URLS_FIELD
  • MAIL_FROM
  • MAIL_HOST
  • MAIL_PASS
  • MAIL_PORT
  • MAIL_SSL
  • MAIL_TLS
  • MAIL_USER
  • METAREFRESH_ENABLED
  • METAREFRESH_MAXDELAY
  • REDIRECT_ENABLED
  • REDIRECT_MAX_TIMES
  • REFERER_ENABLED
  • RETRY_ENABLED
  • RETRY_HTTP_CODES
  • RETRY_TIMES
  • TELNETCONSOLE_HOST
  • TELNETCONSOLE_PORT
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市悦即,隨后出現(xiàn)的幾起案子吮成,更是在濱河造成了極大的恐慌,老刑警劉巖辜梳,帶你破解...
    沈念sama閱讀 218,204評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件粱甫,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡作瞄,警方通過查閱死者的電腦和手機(jī)茶宵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,091評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來粉洼,“玉大人节预,你說我怎么就攤上這事∈羧停” “怎么了安拟?”我有些...
    開封第一講書人閱讀 164,548評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長宵喂。 經(jīng)常有香客問我糠赦,道長,這世上最難降的妖魔是什么锅棕? 我笑而不...
    開封第一講書人閱讀 58,657評(píng)論 1 293
  • 正文 為了忘掉前任拙泽,我火速辦了婚禮,結(jié)果婚禮上裸燎,老公的妹妹穿的比我還像新娘顾瞻。我一直安慰自己,他們只是感情好德绿,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,689評(píng)論 6 392
  • 文/花漫 我一把揭開白布荷荤。 她就那樣靜靜地躺著,像睡著了一般移稳。 火紅的嫁衣襯著肌膚如雪蕴纳。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,554評(píng)論 1 305
  • 那天个粱,我揣著相機(jī)與錄音古毛,去河邊找鬼。 笑死都许,一個(gè)胖子當(dāng)著我的面吹牛稻薇,可吹牛的內(nèi)容都是我干的嫂冻。 我是一名探鬼主播,決...
    沈念sama閱讀 40,302評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼颖低,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼絮吵!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起忱屑,我...
    開封第一講書人閱讀 39,216評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤蹬敲,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后莺戒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體伴嗡,經(jīng)...
    沈念sama閱讀 45,661評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,851評(píng)論 3 336
  • 正文 我和宋清朗相戀三年从铲,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了瘪校。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,977評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡名段,死狀恐怖阱扬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情伸辟,我是刑警寧澤麻惶,帶...
    沈念sama閱讀 35,697評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站信夫,受9級(jí)特大地震影響窃蹋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜静稻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,306評(píng)論 3 330
  • 文/蒙蒙 一警没、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧振湾,春花似錦杀迹、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,898評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至嵌言,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間及穗,已是汗流浹背摧茴。 一陣腳步聲響...
    開封第一講書人閱讀 33,019評(píng)論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留埂陆,地道東北人苛白。 一個(gè)月前我還...
    沈念sama閱讀 48,138評(píng)論 3 370
  • 正文 我出身青樓娃豹,卻偏偏與公主長得像,于是被迫代替她去往敵國和親购裙。 傳聞我的和親對(duì)象是個(gè)殘疾皇子懂版,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,927評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容