Scrapy源码阅读分析_5_Scrapy-settings源码分析
?
From:https://blog.csdn.net/weixin_37947156/article/details/74972642
?
The global defaults are located in the?scrapy.settings.default_settings?module and documented in the?Built-in settings reference?section.
?
?
設(shè)置
?
Scrapy 設(shè)置允許您自定義所有 Scrapy 組件的行為,包括 核心,擴(kuò)展,管道 和 爬蟲本身。
設(shè)置的基礎(chǔ)結(jié)構(gòu)提供了鍵值映射的全局命名空間,代碼可以使用它從中提取配置值。可以通過(guò)不同的機(jī)制來(lái)填充設(shè)置,這將在下面描述。
這些設(shè)置也是選擇當(dāng)前活動(dòng) Scrapy 項(xiàng)目的機(jī)制(如果您有很多)。
有關(guān)可用內(nèi)置設(shè)置的列表,請(qǐng)參閱:內(nèi)置設(shè)置參考:https://docs.scrapy.org/en/latest/topics/settings.html#built-in-settings-reference
?
?
指定設(shè)置
?
當(dāng)你使用Scrapy,你必須告訴它你使用哪些設(shè)置。您可以通過(guò)使用環(huán)境變量來(lái)執(zhí)行此操作 SCRAPY_SETTINGS_MODULE。
值 SCRAPY_SETTINGS_MODULE 應(yīng)該在 Python 路徑語(yǔ)法中,例如?myproject.settings。
請(qǐng)注意,設(shè)置模塊應(yīng)該在Python?導(dǎo)入搜索路徑上。
?
?
填充設(shè)置
?
可以使用不同的機(jī)制來(lái)填充設(shè)置,每個(gè)機(jī)制具有不同的優(yōu)先級(jí)。這里是按優(yōu)先級(jí)降序排列的列表:
這些機(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)目。他們可以通過(guò)設(shè)置 custom_settings 屬性來(lái)實(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è)置參考 部分中。
?
?
如何訪問(wèn)設(shè)置
?
在爬蟲中,設(shè)置可通過(guò)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?通過(guò)傳遞到 from_crawler 擴(kuò)展,中間件 和 項(xiàng)目管道中的方法的爬網(wǎng)程序的屬性訪問(wèn)設(shè)置:
class MyExtension(object):def __init__(self, log_is_enabled=False):if log_is_enabled:print("log is enabled!")@classmethoddef from_crawler(cls, crawler):settings = crawler.settingsreturn 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_ENABLED,ROBOTSTXT_OBEY,ROBOTSTXT_CACHEDIR 等。
?
內(nèi)置設(shè)置參考
?
以下是所有可用Scrapy設(shè)置的列表,按字母順序,以及其默認(rèn)值和適用范圍。
范圍(如果可用)顯示設(shè)置在哪里使用,如果它綁定到任何特定組件。在這種情況下,將顯示該組件的模塊,通常是擴(kuò)展,中間件或管道。這也意味著必須啟用組件才能使設(shè)置具有任何效果。
?
AWS_ACCESS_KEY_ID
默認(rèn):?None
由需要訪問(wèn)Amazon Web服務(wù)的代碼使用的AWS訪問(wèn)密鑰,例如:S3源存儲(chǔ)后端。
?
AWS_SECRET_ACCESS_KEY
默認(rèn):?None
由需要訪問(wèn)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ù)量。
參見(jiàn):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è)置。換句話說(shuō),并發(fā)限制將應(yīng)用于每個(gè)IP,而不是每個(gè)域。
此設(shè)置也會(huì)影響DOWNLOAD_DELAY和?AutoThrottle擴(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)
參見(jiàn):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ù)語(yǔ),定義要使用的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)的證書來(lá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)支持的最高開(kā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è)面之前應(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í)行延遲。
您還可以通過(guò)設(shè)置download_delay?spider屬性來(lái)更改每個(gè)爬蟲的此設(shè)置。
?
DOWNLOAD_HANDLERS
默認(rèn):?{}
包含在您的項(xiàng)目中啟用的請(qǐng)求下載器處理程序的dict。參見(jiàn) 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)修改 。
您可以通過(guò)在其中None分配URI方案來(lái)禁用這些下載處理程序DOWNLOAD_HANDLERS。例如,要禁用內(nèi)置的FTP處理程序(無(wú)替換),請(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ū)㈤_(kāi)始警告的響應(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è)和過(guò)濾重復(fù)請(qǐng)求的類。
默認(rèn)(RFPDupeFilter)過(guò)濾器基于請(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_DEBUG為True將使其記錄所有重復(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)記住,其中一些需要通過(guò)設(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,ERROR,WARNING,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)超過(guò)內(nèi)存限制時(shí)關(guān)閉Scrapy進(jìn)程,并在發(fā)生這種情況時(shí)通過(guò)電子郵件通知。
請(qǐng)參閱內(nèi)存使用擴(kuò)展。
?
MEMUSAGE_LIMIT_MB
默認(rèn):?0
范圍:?scrapy.extensions.memusage
在關(guān)閉Scrapy之前允許的最大內(nèi)存量(以兆字節(jié)為單位)(如果MEMUSAGE_ENABLED為True)。如果為零,則不執(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_MB和MEMUSAGE_WARNING_MB在固定的時(shí)間間隔。
這將設(shè)置這些間隔的長(zhǎng)度(以秒為單位)。
請(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組件使用的常見(jiàn)多用途線程池。線程DNS解析器,BlockingFeedStorage,S3FilesStore僅舉幾個(gè)例子。如果您遇到阻塞IO不足的問(wèn)題,請(qǐng)?jiān)黾哟酥怠?/p>
?
REDIRECT_MAX_TIMES
默認(rèn): 20
定義請(qǐng)求可重定向的最長(zhǎ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文件中通過(guò)命令生成此選項(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)求無(wú)法序列化到磁盤,則當(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.PickleFifoDiskQueue,scrapy.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)參閱 爬蟲合同。
您可以通過(guò)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異常,它將大聲失敗。但是你可以選擇沉默此異常,并通過(guò)設(shè)置將其變成一個(gè)簡(jiǎn)單的警告。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ì)信息的類,誰(shuí)必須實(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)址長(zhǎ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
?
?
?
總結(jié)
以上是生活随笔為你收集整理的Scrapy源码阅读分析_5_Scrapy-settings源码分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Scrapy 爬虫去重效率优化之 Blo
- 下一篇: 安卓逆向_22( 二 ) --- Xpo