設(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í)降序排列的列表:
- 命令行選項(xiàng)(最高優(yōu)先級(jí))
- 每個(gè)爬蟲的設(shè)置
- 項(xiàng)目設(shè)置模塊
- 每命令的默認(rèn)設(shè)置
- 默認(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_ENABLED
,ROBOTSTXT_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_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)
參見: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'
:映射到OpenSSLTLS_method()
(akaSSLv23_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_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)記住,其中一些需要通過設(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)超過內(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_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è)置這些間隔的長度(以秒為單位)臂痕。
請(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.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)參閱爬蟲合同旁理。
您可以通過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