Python版本管理:pyenv和pyenv-virtualenv
Scrapy爬蟲(chóng)入門(mén)教程一 安裝和基本使用
Scrapy爬蟲(chóng)入門(mén)教程二 官方提供Demo
Scrapy爬蟲(chóng)入門(mén)教程三 命令行工具介紹和示例
Scrapy爬蟲(chóng)入門(mén)教程四 Spider(爬蟲(chóng))
Scrapy爬蟲(chóng)入門(mén)教程五 Selectors(選擇器)
Scrapy爬蟲(chóng)入門(mén)教程六 Items(項(xiàng)目)
Scrapy爬蟲(chóng)入門(mén)教程七 Item Loaders(項(xiàng)目加載器)
Scrapy爬蟲(chóng)入門(mén)教程八 交互式 shell 方便調(diào)試
Scrapy爬蟲(chóng)入門(mén)教程九 Item Pipeline(項(xiàng)目管道)
Scrapy爬蟲(chóng)入門(mén)教程十 Feed exports(導(dǎo)出文件)
Scrapy爬蟲(chóng)入門(mén)教程十一 Request和Response(請(qǐng)求和響應(yīng))
Scrapy爬蟲(chóng)入門(mén)教程十二 Link Extractors(鏈接提取器)
開(kāi)發(fā)環(huán)境:
Python 3.6.0 版本 (當(dāng)前最新)
Scrapy 1.3.2 版本 (當(dāng)前最新)
設(shè)置
Scrapy設(shè)置允許您自定義所有Scrapy組件的行為,包括核心,擴(kuò)展,管道和爬蟲(chóng)本身。
設(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è)置參考。
指定設(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í)降序排列的列表:
- 命令行選項(xiàng)(最高優(yōu)先級(jí))
- 每個(gè)爬蟲(chóng)的設(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è)爬蟲(chóng)的設(shè)置
爬蟲(chóng)(請(qǐng)參閱爬蟲(chó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在命令類(lèi)的屬性中指定。
5.默認(rèn)全局設(shè)置
全局默認(rèn)值位于scrapy.settings.default_settings 模塊中,并記錄在內(nèi)置設(shè)置參考部分中。
如何訪問(wèn)設(shè)置
在爬蟲(chóng)中,設(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爬蟲(chóng)初始化后的屬性是在基類(lèi)爬蟲(chóng)設(shè)置。如果你想在初始化之前使用設(shè)置(例如,在你的爬蟲(chóng)的__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!")
@classmethod
def from_crawler(cls, crawler):
settings = crawler.settings
return cls(settings.getbool('LOG_ENABLED'))
設(shè)置對(duì)象可以像dict(例如, settings['LOG_ENABLED'])一樣使用,但通常首選使用SettingsAPI 提供的方法之一,以您需要的格式提取設(shè)置,以避免類(lèi)型錯(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)類(lèi)。
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 類(lèi)。
注意
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的類(lèi)路徑。
這里,“ContextFactory”是用于SSL / TLS上下文的Twisted術(shù)語(yǔ),定義要使用的TLS / SSL協(xié)議版本,是否執(zhí)行證書(shū)驗(yàn)證,或者甚至啟用客戶端驗(yàn)證(以及各種其他事情)。
注意
Scrapy默認(rèn)上下文工廠不執(zhí)行遠(yuǎn)程服務(wù)器證書(shū)驗(yàn)證。這通常對(duì)于網(wǎng)絡(luò)刮削是很好的。
如果您需要啟用遠(yuǎn)程服務(wù)器證書(shū)驗(yàn)證,Scrapy還有另一個(gè)上下文工廠類(lèi),您可以設(shè)置, 'scrapy.core.downloader.contextfactory.BrowserLikeContextFactory'使用平臺(tái)的證書(shū)來(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':映射到OpenSSLTLS_method()(akaSSLv23_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è)爬蟲(chóng)的此設(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è)爬蟲(chóng)設(shè)置此超時(shí)。
DOWNLOAD_MAXSIZE
默認(rèn)值:1073741824(1024MB)
下載器將下載的最大響應(yīng)大?。ㄒ宰止?jié)為單位)。
如果要禁用它設(shè)置為0。
注意
可以使用download_maxsize Spider屬性和每個(gè)請(qǐng)求使用download_maxsize Request.meta鍵為每個(gè)爬蟲(chóng)設(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è)爬蟲(chóng)設(shè)置此大小。
此功能需要Twisted> = 11.1。
DUPEFILTER_CLASS
默認(rèn): 'scrapy.dupefilters.RFPDupeFilter'
用于檢測(cè)和過(guò)濾重復(fù)請(qǐng)求的類(lèi)。
默認(rèn)(RFPDupeFilter)過(guò)濾器基于請(qǐng)求指紋使用該scrapy.utils.request.request_fingerprint函數(shù)。為了改變重復(fù)檢查的方式,你可以子類(lèi)化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命令編輯爬蟲(chóng)的編輯器。它默認(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)告將寫(xiě)入日志。
例:
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è)爬蟲(chóng)關(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)建新的爬蟲(chó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ú)法序列化到磁盤(pán),則當(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)度程序使用的磁盤(pán)隊(duì)列的類(lèi)型。其它可用的類(lèi)型有 scrapy.squeues.PickleFifoDiskQueue,scrapy.squeues.MarshalFifoDiskQueue, scrapy.squeues.MarshalLifoDiskQueue。
SCHEDULER_MEMORY_QUEUE
默認(rèn): 'scrapy.squeues.LifoMemoryQueue'
調(diào)度程序使用的內(nèi)存中隊(duì)列的類(lèi)型。其他可用類(lèi)型是: scrapy.squeues.FifoMemoryQueue。
SCHEDULER_PRIORITY_QUEUE
默認(rèn): 'queuelib.PriorityQueue'
調(diào)度程序使用的優(yōu)先級(jí)隊(duì)列的類(lèi)型。
SPIDER_CONTRACTS
默認(rèn):: {}
包含在項(xiàng)目中啟用的爬蟲(chóng)契約的dict,用于測(cè)試爬蟲(chóng)。有關(guān)更多信息,請(qǐng)參閱爬蟲(chó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)參閱爬蟲(chóng)合同。
您可以通過(guò)None將其中的類(lèi)路徑指定為禁用任何這些合同SPIDER_CONTRACTS。例如,要禁用內(nèi)置 ScrapesContract,將此放在您的settings.py:
SPIDER_CONTRACTS = {
'scrapy.contracts.default.ScrapesContract': None,
}
SPIDER_LOADER_CLASS
默認(rèn): 'scrapy.spiderloader.SpiderLoader'
將用于加載爬蟲(chóng)程序的類(lèi),它必須實(shí)現(xiàn) SpiderLoader API。
SPIDER_LOADER_WARN_ONLY
新版本1.3.3。
默認(rèn): False
默認(rèn)情況下,當(dāng)scrapy嘗試從中導(dǎo)入爬蟲(chóng)類(lèi)時(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í)際上并不需要加載爬蟲(chóng)類(lèi)的工作: scrapy runspider, scrapy settings, scrapy startproject, scrapy version.
SPIDER_MIDDLEWARES
默認(rèn):: {}
包含在您的項(xiàng)目中啟用的爬蟲(chóng)中間件的字典及其順序。有關(guān)更多信息,請(qǐng)參閱激活爬蟲(chó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)啟用的爬蟲(chóng)中間件的字典及其順序。低訂單更靠近發(fā)動(dòng)機(jī),高訂單更接近爬蟲(chóng)。有關(guān)更多信息,請(qǐng)參閱激活爬蟲(chóng)中間件。
SPIDER_MODULES
默認(rèn): []
Scrapy將尋找爬蟲(chóng)的模塊列表。
例:
SPIDER_MODULES = ['mybot.spiders_prod', 'mybot.spiders_dev']
STATS_CLASS
默認(rèn): 'scrapy.statscollectors.MemoryStatsCollector'
用于收集統(tǒng)計(jì)信息的類(lèi),誰(shuí)必須實(shí)現(xiàn) Stats Collector API。
STATS_DUMP
默認(rèn): True
一旦爬蟲(chóng)完成,轉(zhuǎn)儲(chǔ)Scrapy統(tǒng)計(jì)(到Scrapy日志)。
更多信息請(qǐng)參閱:統(tǒng)計(jì)數(shù)據(jù)收集。
STATSMAILER_RCPTS
默認(rèn):( []空列表)
爬蟲(chóng)完成刮擦后發(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命令和新爬蟲(chóng)創(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