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.
?
?
設置
?
Scrapy 設置允許您自定義所有 Scrapy 組件的行為,包括 核心,擴展,管道 和 爬蟲本身。
設置的基礎結構提供了鍵值映射的全局命名空間,代碼可以使用它從中提取配置值。可以通過不同的機制來填充設置,這將在下面描述。
這些設置也是選擇當前活動 Scrapy 項目的機制(如果您有很多)。
有關可用內置設置的列表,請參閱:內置設置參考:https://docs.scrapy.org/en/latest/topics/settings.html#built-in-settings-reference
?
?
指定設置
?
當你使用Scrapy,你必須告訴它你使用哪些設置。您可以通過使用環境變量來執行此操作 SCRAPY_SETTINGS_MODULE。
值 SCRAPY_SETTINGS_MODULE 應該在 Python 路徑語法中,例如?myproject.settings。
請注意,設置模塊應該在Python?導入搜索路徑上。
?
?
填充設置
?
可以使用不同的機制來填充設置,每個機制具有不同的優先級。這里是按優先級降序排列的列表:
這些機制在下面更詳細地描述。
?
1.命令行選項
命令行提供的參數是最優先的參數,覆蓋任何其他選項。您可以使用-s(或--set)命令行選項顯式覆蓋一個(或多個)設置。
例:scrapy crawl myspider -s LOG_FILE=scrapy.log
?
2.每個爬蟲的設置
爬蟲(請參閱爬蟲章節以供參考)可以定義自己的設置,這些設置將優先并覆蓋項目。他們可以通過設置 custom_settings 屬性來實現:
class MySpider(scrapy.Spider):name = 'myspider'custom_settings = {'SOME_SETTING': 'some value',}?
3.項目設置模塊
項目設置模塊是Scrapy項目的標準配置文件,它將填充大多數自定義設置。對于標準的Scrapy項目,這意味著您將添加或更改settings.py 為您的項目創建的文件中的設置。
?
4.每命令的默認設置
每個 Scrapy工具 命令都可以有自己的默認設置,覆蓋全局默認設置。這些自定義命令設置 default_settings 在命令類的屬性中指定。
?
5.默認全局設置
全局默認值位于 scrapy.settings.default_settings?模塊中,并記錄在 內置設置參考 部分中。
?
?
如何訪問設置
?
在爬蟲中,設置可通過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 爬蟲初始化后的屬性是在基類爬蟲設置。如果你想在初始化之前使用設置(例如,在你的爬蟲的 __init__() 方法),你需要覆蓋該?from_crawler() 方法。
可以scrapy.crawler.Crawler.settings?通過傳遞到 from_crawler 擴展,中間件 和 項目管道中的方法的爬網程序的屬性訪問設置:
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'))設置對象可以像 dict(例如,?settings['LOG_ENABLED'])一樣使用,但通常首選使用 SettingsAPI?提供的方法之一,以您需要的格式提取設置,以避免類型錯誤。
?
設置名稱的原因
?
設置名稱通常以它們配置的組件為前綴。例如,對于一個虛構的robots.txt分機正確的設置的名稱將是?ROBOTSTXT_ENABLED,ROBOTSTXT_OBEY,ROBOTSTXT_CACHEDIR 等。
?
內置設置參考
?
以下是所有可用Scrapy設置的列表,按字母順序,以及其默認值和適用范圍。
范圍(如果可用)顯示設置在哪里使用,如果它綁定到任何特定組件。在這種情況下,將顯示該組件的模塊,通常是擴展,中間件或管道。這也意味著必須啟用組件才能使設置具有任何效果。
?
AWS_ACCESS_KEY_ID
默認:?None
由需要訪問Amazon Web服務的代碼使用的AWS訪問密鑰,例如:S3源存儲后端。
?
AWS_SECRET_ACCESS_KEY
默認:?None
由需要訪問Amazon Web服務的代碼使用的AWS密鑰,例如:S3源存儲后端。
?
BOT_NAME
默認:?'scrapybot'
此 Scrapy 項目實施的 bot 的名稱(也稱為項目名稱)。這將用于默認情況下構造 User-Agent,也用于日志記錄。
當您使用 startproject 命令創建項目時,它會自動填充您的項目名稱。
?
CONCURRENT_ITEMS
默認:?100
在項處理器(也稱為 項目管道)中并行處理的并發項目的最大數量(每個響應)。
?
CONCURRENT_REQUESTS
默認:?16
將由 Scrapy下載程序執行的并發(即同時)請求的最大數量。
?
CONCURRENT_REQUESTS_PER_DOMAIN
默認:?8
將對任何單個域執行的并發(即同時)請求的最大數量。
參見:AutoThrottle擴展 及其? AUTOTHROTTLE_TARGET_CONCURRENCY 選項。
?
CONCURRENT_REQUESTS_PER_IP
默認:?0
將對任何單個IP執行的并發(即同時)請求的最大數量。如果非零,CONCURRENT_REQUESTS_PER_DOMAIN 則忽略該 設置,而改為使用此設置。換句話說,并發限制將應用于每個IP,而不是每個域。
此設置也會影響DOWNLOAD_DELAY和?AutoThrottle擴展:如果CONCURRENT_REQUESTS_PER_IP?非零,下載延遲是強制每IP,而不是每個域。
?
DEFAULT_ITEM_CLASS
默認:?'scrapy.item.Item'
將用于在 Scrapy shell 中實例化項的默認類。
?
DEFAULT_REQUEST_HEADERS
默認:
{'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Language': 'en', }用于 Scrapy HTTP 請求的默認標頭。他們居住在?DefaultHeadersMiddleware。
?
DEPTH_LIMIT
默認:?0
范圍:?scrapy.spidermiddlewares.depth.DepthMiddleware
允許抓取任何網站的最大深度。如果為零,則不施加限制。
DEPTH_PRIORITY
默認:?0
范圍:?scrapy.spidermiddlewares.depth.DepthMiddleware
用于根據深度調整請求優先級的整數:
如果為零(默認),則不從深度進行優先級調整
正值將降低優先級,即,較高深度請求將被稍后處理 ; 這通常用于做廣度優先爬網(BFO)
負值將增加優先級,即,較高深度請求將被更快地處理(DFO)
參見:Scrapy是否以廣度優先或深度優先順序爬行?關于調整BFO或DFO的Scrapy。
?
注意
此設置以與其他優先級設置 和相反的方式調整優先級。REDIRECT_PRIORITY_ADJUSTRETRY_PRIORITY_ADJUST
?
DEPTH_STATS
默認: True
范圍:?scrapy.spidermiddlewares.depth.DepthMiddleware
是否收集最大深度統計。
?
DEPTH_STATS_VERBOSE
默認:?False
范圍:?scrapy.spidermiddlewares.depth.DepthMiddleware
是否收集詳細的深度統計信息。如果啟用此選項,則在統計信息中收集每個深度的請求數。
?
DNSCACHE_ENABLED
默認:?True
是否啟用DNS內存緩存。
?
DNSCACHE_SIZE
默認:?10000
DNS內存緩存大小。
?
DNS_TIMEOUT
默認:?60
以秒為單位處理DNS查詢的超時。支持浮點。
?
DOWNLOADER
默認:?'scrapy.core.downloader.Downloader'
用于抓取的下載器。
?
DOWNLOADER_HTTPCLIENTFACTORY
默認:?'scrapy.core.downloader.webclient.ScrapyHTTPClientFactory'
定義protocol.ClientFactory?用于HTTP / 1.0連接(for?HTTP10DownloadHandler)的Twisted類。
注意
HTTP / 1.0現在很少使用,所以你可以安全地忽略這個設置,除非你使用Twisted <11.1,或者如果你真的想使用HTTP / 1.0和覆蓋DOWNLOAD_HANDLERS_BASE相應的http(s)方案,即到?'scrapy.core.downloader.handlers.http.HTTP10DownloadHandler'。
?
DOWNLOADER_CLIENTCONTEXTFACTORY
默認:?'scrapy.core.downloader.contextfactory.ScrapyClientContextFactory'
表示要使用的ContextFactory的類路徑。
這里,“ContextFactory”是用于SSL / TLS上下文的Twisted術語,定義要使用的TLS / SSL協議版本,是否執行證書驗證,或者甚至啟用客戶端驗證(以及各種其他事情)。
注意
Scrapy默認上下文工廠不執行遠程服務器證書驗證。這通常對于網絡刮削是很好的。
如果您需要啟用遠程服務器證書驗證,Scrapy還有另一個上下文工廠類,您可以設置,?'scrapy.core.downloader.contextfactory.BrowserLikeContextFactory'使用平臺的證書來驗證遠程端點。?僅當使用Twisted> = 14.0時,此選項才可用。
如果你使用一個自定義的ContextFactory,確保它接受一個method?參數在init(這是OpenSSL.SSL方法映射DOWNLOADER_CLIENT_TLS_METHOD)。
?
DOWNLOADER_CLIENT_TLS_METHOD
默認:?'TLS'
使用此設置可自定義默認HTTP / 1.1下載程序使用的TLS / SSL方法。
此設置必須是以下字符串值之一:
- 'TLS':映射到OpenSSL?TLS_method()(aka?SSLv23_method()),允許協議協商,從平臺支持的最高開始; 默認,推薦
- 'TLSv1.0':此值強制HTTPS連接使用TLS版本1.0; 如果你想要Scrapy <1.1的行為,設置這個
- 'TLSv1.1':強制TLS版本1.1
- 'TLSv1.2':強制TLS版本1.2
- 'SSLv3':強制SSL版本3(不推薦)
注意
我們建議您使用PyOpenSSL> = 0.13和Twisted> = 0.13或以上(如果可以,Twisted> = 14.0)。
?
DOWNLOADER_MIDDLEWARES
默認::?{}
包含在您的項目中啟用的下載器中間件及其順序的字典。有關更多信息,請參閱激活下載器中間件。
?
DOWNLOADER_MIDDLEWARES_BASE
默認:
{'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中默認啟用的下載器中間件的字典。低訂單更靠近發動機,高訂單更接近下載器。您不應該在項目中修改此設置,DOWNLOADER_MIDDLEWARES而應修改 。有關更多信息,請參閱?激活下載器中間件。
?
DOWNLOADER_STATS
默認:?True
是否啟用下載器統計信息收集。
?
DOWNLOAD_DELAY
默認:?0
下載器在從同一網站下載連續頁面之前應等待的時間(以秒為單位)。這可以用于限制爬行速度,以避免擊中服務器太難。支持小數。例:
DOWNLOAD_DELAY = 0.25 ? ?# 250 ms of delay
此設置也受RANDOMIZE_DOWNLOAD_DELAY?設置(默認情況下啟用)的影響。默認情況下,Scrapy不會在請求之間等待固定的時間量,而是使用0.5?DOWNLOAD_DELAY和1.5?之間的隨機間隔DOWNLOAD_DELAY。
當CONCURRENT_REQUESTS_PER_IP為非零時,每個IP地址而不是每個域強制執行延遲。
您還可以通過設置download_delay?spider屬性來更改每個爬蟲的此設置。
?
DOWNLOAD_HANDLERS
默認:?{}
包含在您的項目中啟用的請求下載器處理程序的dict。參見 DOWNLOAD_HANDLERS_BASE?示例格式。
?
DOWNLOAD_HANDLERS_BASE
默認:
{?'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中默認啟用的請求下載處理程序的字典。您不應該在項目中修改此設置,DOWNLOAD_HANDLERS而應修改 。
您可以通過在其中None分配URI方案來禁用這些下載處理程序DOWNLOAD_HANDLERS。例如,要禁用內置的FTP處理程序(無替換),請將其放置在settings.py:
DOWNLOAD_HANDLERS = {'ftp': None, }?
DOWNLOAD_TIMEOUT
默認:?180
下載器在超時前等待的時間量(以秒為單位)。
注意
可以使用download_timeout?Spider屬性和每個請求使用download_timeout?Request.meta鍵為每個爬蟲設置此超時。
?
DOWNLOAD_MAXSIZE
默認值:1073741824(1024MB)
下載器將下載的最大響應大小(以字節為單位)。
如果要禁用它設置為0。
注意
可以使用download_maxsize?Spider屬性和每個請求使用download_maxsize?Request.meta鍵為每個爬蟲設置此大小。
此功能需要Twisted> = 11.1。
?
DOWNLOAD_WARNSIZE
默認值:33554432(32MB)
下載程序將開始警告的響應大小(以字節為單位)。
如果要禁用它設置為0。
注意
可以使用download_warnsize?Spider屬性和每個請求使用download_warnsize?Request.meta鍵為每個爬蟲設置此大小。
此功能需要Twisted> = 11.1。
?
DUPEFILTER_CLASS
默認:?'scrapy.dupefilters.RFPDupeFilter'
用于檢測和過濾重復請求的類。
默認(RFPDupeFilter)過濾器基于請求指紋使用該scrapy.utils.request.request_fingerprint函數。為了改變重復檢查的方式,你可以子類化RFPDupeFilter并重載它的request_fingerprint方法。這個方法應該接受scrapy?Request對象并返回其指紋(一個字符串)。
?
DUPEFILTER_DEBUG
默認:?False
默認情況下,RFPDupeFilter只記錄第一個重復的請求。設置DUPEFILTER_DEBUG為True將使其記錄所有重復的請求。
?
EDITOR
默認值:取決于環境
用于使用edit命令編輯爬蟲的編輯器。它默認為EDITOR環境變量,如果設置。否則,它默認為vi(在Unix系統上)或IDLE編輯器(在Windows上)。
?
EXTENSIONS
默認::?{}
包含項目中啟用的擴展名及其順序的字典。
?
EXTENSIONS_BASE
默認:
{'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, }包含默認情況下在Scrapy中可用的擴展名及其順序的字典。此設置包含所有穩定的內置擴展。請記住,其中一些需要通過設置啟用。
有關詳細信息,請參閱 擴展程序用戶指南?和 可用擴展列表。
?
FEED_TEMPDIR
Feed Temd dir允許您在使用FTP源存儲和 Amazon S3上傳之前設置自定義文件夾以保存搜尋器臨時文件。
?
ITEM_PIPELINES
默認:?{}
包含要使用的項目管道及其順序的字典。順序值是任意的,但通常將它們定義在0-1000范圍內。較低訂單處理較高訂單前。
例:
ITEM_PIPELINES = {'mybot.pipelines.validate.ValidateMyItem': 300,'mybot.pipelines.validate.StoreMyItem': 800, }?
ITEM_PIPELINES_BASE
默認:?{}
包含Scrapy中默認啟用的管道的字典。您不應該在項目中修改此設置,ITEM_PIPELINES而應修改。
?
LOG_ENABLED
默認:?True
是否啟用日志記錄。
?
LOG_ENCODING
默認:?'utf-8'
用于記錄的編碼。
?
LOG_FILE
默認:?None
用于記錄輸出的文件名。如果None,將使用標準誤差。
?
LOG_FORMAT
默認:?'%(asctime)s [%(name)s] %(levelname)s: %(message)s'
用于格式化日志消息的字符串。有關可用占位符的完整列表,請參閱Python日志記錄文檔。
?
LOG_DATEFORMAT
默認:?'%Y-%m-%d %H:%M:%S'
用于格式化日期/時間的字符串,占位符的%(asctime)s擴展LOG_FORMAT。有關可用指令的完整列表,請參閱Python datetime文檔。
?
LOG_LEVEL
默認:?'DEBUG'
記錄的最低級別。可用級別為:CRITICAL,ERROR,WARNING,INFO,DEBUG。有關詳細信息,請參閱日志。
?
LOG_STDOUT
默認:?False
如果True,您的進程的所有標準輸出(和錯誤)將被重定向到日志。例如,如果它將出現在Scrapy日志中。print 'hello'
?
LOG_SHORT_NAMES
默認:?False
如果True,日志將僅包含根路徑。如果設置為,False?則它顯示負責日志輸出的組件
?
MEMDEBUG_ENABLED
默認:?False
是否啟用內存調試。
?
MEMDEBUG_NOTIFY
默認:?[]
當啟用內存調試時,如果此設置不為空,則會將內存報告發送到指定的地址,否則報告將寫入日志。
例:MEMDEBUG_NOTIFY = ['user@example.com']
?
MEMUSAGE_ENABLED
默認:?False
范圍:?scrapy.extensions.memusage
是否啟用內存使用擴展,當超過內存限制時關閉Scrapy進程,并在發生這種情況時通過電子郵件通知。
請參閱內存使用擴展。
?
MEMUSAGE_LIMIT_MB
默認:?0
范圍:?scrapy.extensions.memusage
在關閉Scrapy之前允許的最大內存量(以兆字節為單位)(如果MEMUSAGE_ENABLED為True)。如果為零,則不執行檢查。
請參閱 內存使用擴展。
?
MEMUSAGE_CHECK_INTERVAL_SECONDS
新版本1.1。
默認:?60.0
范圍:?scrapy.extensions.memusage
該內存使用擴展?檢查當前內存使用情況,相對于限制由設置?MEMUSAGE_LIMIT_MB和MEMUSAGE_WARNING_MB在固定的時間間隔。
這將設置這些間隔的長度(以秒為單位)。
請參閱內存使用擴展。
?
MEMUSAGE_NOTIFY_MAIL
默認:?False
范圍:?scrapy.extensions.memusage
要達到內存限制時通知的電子郵件列表。
例:MEMUSAGE_NOTIFY_MAIL = ['user@example.com']
請參閱內存使用擴展。
?
MEMUSAGE_REPORT
默認:?False
范圍:?scrapy.extensions.memusage
是否在每個爬蟲關閉后發送內存使用報告。
請參閱內存使用擴展。
?
MEMUSAGE_WARNING_MB
默認:?0
范圍:?scrapy.extensions.memusage
在發送警告電子郵件通知之前,要允許的最大內存量(以兆字節為單位)。如果為零,則不會產生警告。
?
NEWSPIDER_MODULE
默認:?''
模塊在哪里使用genspider命令創建新的爬蟲。
例:NEWSPIDER_MODULE = 'mybot.spiders_dev'
?
RANDOMIZE_DOWNLOAD_DELAY
默認:?True
如果啟用,Scrapy會在從同一網站獲取請求時等待隨機時間(介于0.5?DOWNLOAD_DELAY和1.5?之間DOWNLOAD_DELAY)。
該隨機化降低了由分析請求的站點檢測(并隨后阻塞)爬行器的機會,所述站點在它們的請求之間的時間內尋找統計上顯著的相似性。
隨機化策略與wget --random-wait選項使用的策略相同。
如果DOWNLOAD_DELAY為零(默認),此選項不起作用。
?
REACTOR_THREADPOOL_MAXSIZE
默認:?10
Twisted Reactor線程池大小的上限。這是各種Scrapy組件使用的常見多用途線程池。線程DNS解析器,BlockingFeedStorage,S3FilesStore僅舉幾個例子。如果您遇到阻塞IO不足的問題,請增加此值。
?
REDIRECT_MAX_TIMES
默認: 20
定義請求可重定向的最長時間。在此最大值之后,請求的響應被原樣返回。我們對同一個任務使用Firefox默認值。
?
REDIRECT_PRIORITY_ADJUST
默認: +2
范圍: scrapy.downloadermiddlewares.redirect.RedirectMiddleware
相對于原始請求調整重定向請求優先級:
- 正優先級調整(默認)意味著更高的優先級。
- 負優先級調整意味著較低優先級。
?
RETRY_PRIORITY_ADJUST
默認:?-1
范圍:?scrapy.downloadermiddlewares.retry.RetryMiddleware
調整相對于原始請求的重試請求優先級:
- 正優先級調整意味著更高的優先級。
- 負優先級調整(默認)表示較低優先級。
?
ROBOTSTXT_OBEY
默認:?False
范圍:?scrapy.downloadermiddlewares.robotstxt
如果啟用,Scrapy會尊重robots.txt政策。有關詳細信息,請參閱?RobotsTxtMiddleware。
注意
雖然默認值是False由于歷史原因,默認情況下在settings.py文件中通過命令生成此選項。scrapy startproject
?
SCHEDULER
默認:?'scrapy.core.scheduler.Scheduler'
用于爬網的調度程序。
?
SCHEDULER_DEBUG
默認:?False
設置True將記錄有關請求調度程序的調試信息。如果請求無法序列化到磁盤,則當前日志(僅一次)。Stats counter(scheduler/unserializable)跟蹤發生的次數。
日志中的示例條目:
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
默認:?'scrapy.squeues.PickleLifoDiskQueue'
將由調度程序使用的磁盤隊列的類型。其它可用的類型有?scrapy.squeues.PickleFifoDiskQueue,scrapy.squeues.MarshalFifoDiskQueue,?scrapy.squeues.MarshalLifoDiskQueue。
?
SCHEDULER_MEMORY_QUEUE
默認:?'scrapy.squeues.LifoMemoryQueue'
調度程序使用的內存中隊列的類型。其他可用類型是:?scrapy.squeues.FifoMemoryQueue。
?
SCHEDULER_PRIORITY_QUEUE
默認:?'queuelib.PriorityQueue'
調度程序使用的優先級隊列的類型。
?
SPIDER_CONTRACTS
默認::?{}
包含在項目中啟用的爬蟲契約的dict,用于測試爬蟲。有關更多信息,請參閱爬蟲合同。
?
SPIDER_CONTRACTS_BASE
默認:
{
? ? 'scrapy.contracts.default.UrlContract' : 1,
? ? 'scrapy.contracts.default.ReturnsContract': 2,
? ? 'scrapy.contracts.default.ScrapesContract': 3,
}
包含Scrapy中默認啟用的scrapy合約的dict。您不應該在項目中修改此設置,SPIDER_CONTRACTS 而應修改。有關更多信息,請參閱 爬蟲合同。
您可以通過None將其中的類路徑指定為禁用任何這些合同SPIDER_CONTRACTS。例如,要禁用內置?ScrapesContract,將此放在您的settings.py:
SPIDER_CONTRACTS = {'scrapy.contracts.default.ScrapesContract': None, }?
SPIDER_LOADER_CLASS
默認:?'scrapy.spiderloader.SpiderLoader'
將用于加載爬蟲程序的類,它必須實現?SpiderLoader API。
?
SPIDER_LOADER_WARN_ONLY
新版本1.3.3。
默認:?False
默認情況下,當scrapy嘗試從中導入爬蟲類時SPIDER_MODULES,如果有任何ImportError異常,它將大聲失敗。但是你可以選擇沉默此異常,并通過設置將其變成一個簡單的警告。SPIDER_LOADER_WARN_ONLY = True
注意
有些scrapy命令使用此設置運行True?已經(即他們只會發出警告并不會失敗),因為他們實際上并不需要加載爬蟲類的工作:?scrapy runspider,?scrapy settings,?scrapy startproject,?scrapy version.
?
SPIDER_MIDDLEWARES
默認:: {}
包含在您的項目中啟用的爬蟲中間件的字典及其順序。有關更多信息,請參閱激活爬蟲中間件。
?
SPIDER_MIDDLEWARES_BASE
默認:
{'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中默認啟用的爬蟲中間件的字典及其順序。低訂單更靠近發動機,高訂單更接近爬蟲。有關更多信息,請參閱激活爬蟲中間件。
?
SPIDER_MODULES
默認: []
Scrapy將尋找爬蟲的模塊列表。
例:SPIDER_MODULES = ['mybot.spiders_prod', 'mybot.spiders_dev']
?
STATS_CLASS
默認:?'scrapy.statscollectors.MemoryStatsCollector'
用于收集統計信息的類,誰必須實現?Stats Collector API。
?
STATS_DUMP
默認: True
一旦爬蟲完成,轉儲Scrapy統計(到Scrapy日志)。
更多信息請參閱:統計數據收集。
?
STATSMAILER_RCPTS
默認:(?[]空列表)
爬蟲完成刮擦后發送Scrapy stats。查看 StatsMailer更多信息。
?
TELNETCONSOLE_ENABLED
默認:?True
布爾值,指定是否 啟用telnet控制臺(如果其擴展名也啟用)。
?
TELNETCONSOLE_PORT
默認:?[6023, 6073]
用于telnet控制臺的端口范圍。如果設置為None或0,則使用動態分配的端口。有關詳細信息,請參閱?telnet控制臺。
?
TEMPLATES_DIR
默認值:templates?dir里面的scrapy模塊
使用startproject命令和新爬蟲創建新項目時使用命令查找模板的目錄?genspider?。
項目名稱不得與子目錄中的自定義文件或目錄的名稱沖突project。
?
URLLENGTH_LIMIT
默認:?2083
范圍:?spidermiddlewares.urllength
允許抓取網址的最大網址長度。有關此設置的默認值的詳細信息,請參閱http://www.boutell.com/newfaq/misc/urllength.html
?
USER_AGENT
默認:?"Scrapy/VERSION (+http://scrapy.org)"
檢索時使用的默認用戶代理,除非被覆蓋。
?
其他地方記錄的設置:
以下設置在其他地方記錄,請檢查每個具體案例,了解如何啟用和使用它們。
- 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
?
?
?
總結
以上是生活随笔為你收集整理的Scrapy源码阅读分析_5_Scrapy-settings源码分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Scrapy 爬虫去重效率优化之 Blo
- 下一篇: 安卓逆向_22( 二 ) --- Xpo