Scrapy爬蟲入門教程十三 Settings(設置)

Python版本管理:pyenv和pyenv-virtualenv
Scrapy爬蟲入門教程一 安裝和基本使用
Scrapy爬蟲入門教程二 官方提供Demo
Scrapy爬蟲入門教程三 命令行工具介紹和示例
Scrapy爬蟲入門教程四 Spider(爬蟲)
Scrapy爬蟲入門教程五 Selectors(選擇器)
Scrapy爬蟲入門教程六 Items(項目)
Scrapy爬蟲入門教程七 Item Loaders(項目加載器)
Scrapy爬蟲入門教程八 交互式 shell 方便調(diào)試
Scrapy爬蟲入門教程九 Item Pipeline(項目管道)
Scrapy爬蟲入門教程十 Feed exports(導出文件)
Scrapy爬蟲入門教程十一 Request和Response(請求和響應)
Scrapy爬蟲入門教程十二 Link Extractors(鏈接提取器)

開發(fā)環(huán)境:
Python 3.6.0 版本 (當前最新)
Scrapy 1.3.2 版本 (當前最新)

設置

Scrapy設置允許您自定義所有Scrapy組件的行為,包括核心饵隙,擴展金矛,管道和爬蟲本身勺届。

設置的基礎結(jié)構(gòu)提供了鍵值映射的全局命名空間免姿,代碼可以使用它從中提取配置值∠胗ィ可以通過不同的機制來填充設置辑舷,這將在下面描述槽片。

這些設置也是選擇當前活動Scrapy項目的機制(如果您有很多)还栓。

有關可用內(nèi)置設置的列表蝙云,請參閱:內(nèi)置設置參考勃刨。

指定設置

當你使用Scrapy身隐,你必須告訴它你使用哪些設置贾铝。您可以通過使用環(huán)境變量來執(zhí)行此操作SCRAPY_SETTINGS_MODULE垢揩。

SCRAPY_SETTINGS_MODULE應該在Python路徑語法中叁巨,例如 myproject.settings呐籽。請注意狡蝶,設置模塊應該在Python 導入搜索路徑上贪惹。

填充設置

可以使用不同的機制來填充設置馍乙,每個機制具有不同的優(yōu)先級。這里是按優(yōu)先級降序排列的列表:

  1. 命令行選項(最高優(yōu)先級)
  2. 每個爬蟲的設置
  3. 項目設置模塊
  4. 每命令的默認設置
  5. 默認全局設置(優(yōu)先級較低)

這些設置源的數(shù)量在內(nèi)部處理棵譬,但可以使用API??調(diào)用進行手動處理订咸。請參閱 設置API主題以供參考脏嚷。

這些機制在下面更詳細地描述父叙。

1.命令行選項

命令行提供的參數(shù)是最優(yōu)先的參數(shù)趾唱,覆蓋任何其他選項甜癞。您可以使用-s(或--set)命令行選項顯式覆蓋一個(或多個)設置悠咱。

例:

scrapy crawl myspider -s LOG_FILE=scrapy.log

2.每個爬蟲的設置

爬蟲(請參閱爬蟲章節(jié)以供參考)可以定義自己的設置析既,這些設置將優(yōu)先并覆蓋項目渡贾。他們可以通過設置custom_settings屬性來實現(xiàn):

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

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

3.項目設置模塊

項目設置模塊是Scrapy項目的標準配置文件空骚,它將填充大多數(shù)自定義設置囤屹。對于標準的Scrapy項目肋坚,這意味著您將添加或更改settings.py為您的項目創(chuàng)建的文件中的設置智厌。

4.每命令的默認設置

每個Scrapy工具命令都可以有自己的默認設置铣鹏,覆蓋全局默認設置诚卸。這些自定義命令設置default_settings在命令類的屬性中指定合溺。

5.默認全局設置

全局默認值位于scrapy.settings.default_settings 模塊中棠赛,并記錄在內(nèi)置設置參考部分中睛约。

如何訪問設置

在爬蟲中痰腮,設置可通過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擴展茬缩,中間件和項目管道中的方法的爬網(wǎng)程序的屬性訪問設置:

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'))

設置對象可以像dict(例如凰锡, settings['LOG_ENABLED'])一樣使用掂为,但通常首選使用SettingsAPI 提供的方法之一勇哗,以您需要的格式提取設置智绸,以避免類型錯誤瞧栗。

設置名稱的原因

設置名稱通常以它們配置的組件為前綴迹恐。例如殴边,對于一個虛構(gòu)的robots.txt分機正確的設置的名稱將是 ROBOTSTXT_ENABLED锤岸,ROBOTSTXT_OBEY是偷,ROBOTSTXT_CACHEDIR等蛋铆。

內(nèi)置設置參考

以下是所有可用Scrapy設置的列表留特,按字母順序蜕青,以及其默認值和適用范圍市咆。

范圍(如果可用)顯示設置在哪里使用蒙兰,如果它綁定到任何特定組件搜变。在這種情況下挠他,將顯示該組件的模塊殖侵,通常是擴展拢军,中間件或管道茉唉。這也意味著必須啟用組件才能使設置具有任何效果度陆。

AWS_ACCESS_KEY_ID

默認: None

由需要訪問Amazon Web服務的代碼使用的AWS訪問密鑰懂傀,例如S3源存儲后端蹬蚁。

AWS_SECRET_ACCESS_KEY

默認: None

由需要訪問Amazon Web服務的代碼使用的AWS密鑰,例如S3源存儲后端闪水。

BOT_NAME

默認: 'scrapybot'

此Scrapy項目實施的bot的名稱(也稱為項目名稱)球榆。這將用于默認情況下構(gòu)造User-Agent持钉,也用于日志記錄每强。

當您使用startproject命令創(chuàng)建項目時空执,它會自動填充您的項目名稱奶栖。

CONCURRENT_ITEMS

默認: 100

在項處理器(也稱為項目管道)中并行處理的并發(fā)項目的最大數(shù)量(每個響應)宣鄙。

CONCURRENT_REQUESTS

默認: 16

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

CONCURRENT_REQUESTS_PER_DOMAIN

默認: 8

將對任何單個域執(zhí)行的并發(fā)(即同時)請求的最大數(shù)量明也。

參見:AutoThrottle擴展及其 AUTOTHROTTLE_TARGET_CONCURRENCY選項。

CONCURRENT_REQUESTS_PER_IP

默認: 0

將對任何單個IP執(zhí)行的并發(fā)(即同時)請求的最大數(shù)量撑刺。如果非零够傍,CONCURRENT_REQUESTS_PER_DOMAIN則忽略該 設置冕屯,而改為使用此設置安聘。換句話說,并發(fā)限制將應用于每個IP念颈,而不是每個域榴芳。

此設置也會影響DOWNLOAD_DELAYAutoThrottle擴展:如果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

允許抓取任何網(wǎng)站的最大深度。如果為零寞缝,則不施加限制荆陆。

DEPTH_PRIORITY

默認: 0

范圍: scrapy.spidermiddlewares.depth.DepthMiddleware

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

如果為零(默認),則不從深度進行優(yōu)先級調(diào)整
正值將降低優(yōu)先級,即术健,較高深度請求將被稍后處理 ; 這通常用于做廣度優(yōu)先爬網(wǎng)(BFO)
負值將增加優(yōu)先級荞估,即跪腹,較高深度請求將被更快地處理(DFO)
參見:Scrapy是否以廣度優(yōu)先或深度優(yōu)先順序爬行冲茸?關于調(diào)整BFO或DFO的Scrapy轴术。

注意

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

DEPTH_STATS

默認: True

范圍: scrapy.spidermiddlewares.depth.DepthMiddleware

是否收集最大深度統(tǒng)計彼宠。

DEPTH_STATS_VERBOSE

默認: False

范圍: scrapy.spidermiddlewares.depth.DepthMiddleware

是否收集詳細的深度統(tǒng)計信息。如果啟用此選項想罕,則在統(tǒng)計信息中收集每個深度的請求數(shù)按价。

DNSCACHE_ENABLED

默認: True

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

DNSCACHE_SIZE

默認: 10000

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

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現(xiàn)在很少使用钓株,所以你可以安全地忽略這個設置享幽,除非你使用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術(shù)語跟畅,定義要使用的TLS / SSL協(xié)議版本咽筋,是否執(zhí)行證書驗證,或者甚至啟用客戶端驗證(以及各種其他事情)徊件。

注意

Scrapy默認上下文工廠不執(zhí)行遠程服務器證書驗證奸攻。這通常對于網(wǎng)絡刮削是很好的。

如果您需要啟用遠程服務器證書驗證虱痕,Scrapy還有另一個上下文工廠類,您可以設置部翘, 'scrapy.core.downloader.contextfactory.BrowserLikeContextFactory'使用平臺的證書來驗證遠程端點硝训。 僅當使用Twisted> = 14.0時,此選項才可用

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

DOWNLOADER_CLIENT_TLS_METHOD

默認: 'TLS'

使用此設置可自定義默認HTTP / 1.1下載程序使用的TLS / SSL方法表牢。

此設置必須是以下字符串值之一:

  • 'TLS':映射到OpenSSL TLS_method()(aka SSLv23_method())窄绒,允許協(xié)議協(xié)商,從平臺支持的最高開始; 默認崔兴,推薦
  • '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中默認啟用的下載器中間件的字典掏父。低訂單更靠近發(fā)動機,高訂單更接近下載器秆剪。您不應該在項目中修改此設置赊淑,DOWNLOADER_MIDDLEWARES而應修改 。有關更多信息仅讽,請參閱 激活下載器中間件陶缺。

DOWNLOADER_STATS

默認: True

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

DOWNLOAD_DELAY

默認: 0

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

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地址而不是每個域強制執(zhí)行延遲荠诬。

您還可以通過設置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新荤。例如揽趾,要禁用內(nèi)置的FTP處理程序(無替換),請將其放置在settings.py

DOWNLOAD_HANDLERS = {
    'ftp': None,
}

DOWNLOAD_TIMEOUT

默認: 180

下載器在超時前等待的時間量(以秒為單位)苛骨。

注意

可以使用download_timeout Spider屬性和每個請求使用download_timeout Request.meta鍵為每個爬蟲設置此超時篱瞎。

DOWNLOAD_MAXSIZE

默認值:1073741824(1024MB)

下載器將下載的最大響應大小(以字節(jié)為單位)痒芝。

如果要禁用它設置為0俐筋。

注意

可以使用download_maxsize Spider屬性和每個請求使用download_maxsize Request.meta鍵為每個爬蟲設置此大小。

此功能需要Twisted> = 11.1严衬。

DOWNLOAD_WARNSIZE

默認值:33554432(32MB)

下載程序?qū)㈤_始警告的響應大谐握摺(以字節(jié)為單位)。

如果要禁用它設置為0请琳。

注意

可以使用download_warnsize Spider屬性和每個請求使用download_warnsize Request.meta鍵為每個爬蟲設置此大小闷哆。

此功能需要Twisted> = 11.1。

DUPEFILTER_CLASS

默認: 'scrapy.dupefilters.RFPDupeFilter'

用于檢測和過濾重復請求的類单起。

默認(RFPDupeFilter)過濾器基于請求指紋使用該scrapy.utils.request.request_fingerprint函數(shù)抱怔。為了改變重復檢查的方式,你可以子類化RFPDupeFilter并重載它的request_fingerprint方法嘀倒。這個方法應該接受scrapy Request對象并返回其指紋(一個字符串)屈留。

DUPEFILTER_DEBUG

默認: False

默認情況下,RFPDupeFilter只記錄第一個重復的請求测蘑。設置DUPEFILTER_DEBUGTrue將使其記錄所有重復的請求灌危。

EDITOR

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

用于使用edit命令編輯爬蟲的編輯器。它默認為EDITOR環(huán)境變量碳胳,如果設置勇蝙。否則,它默認為vi(在Unix系統(tǒng)上)或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中可用的擴展名及其順序的字典。此設置包含所有穩(wěn)定的內(nèi)置擴展诫惭。請記住翁锡,其中一些需要通過設置啟用。

有關詳細信息夕土,請參閱擴展程序用戶指南可用擴展列表馆衔。

FEED_TEMPDIR

Feed Temd dir允許您在使用FTP源存儲和 Amazon S3上傳之前設置自定義文件夾以保存搜尋器臨時文件瘟判。

ITEM_PIPELINES

默認: {}

包含要使用的項目管道及其順序的字典。順序值是任意的角溃,但通常將它們定義在0-1000范圍內(nèi)拷获。較低訂單處理較高訂單前。

例:

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展姐,WARNINGINFO剖毯,DEBUG圾笨。有關詳細信息,請參閱日志逊谋。

LOG_STDOUT

默認: False

如果True擂达,您的進程的所有標準輸出(和錯誤)將被重定向到日志。例如胶滋,如果它將出現(xiàn)在Scrapy日志中板鬓。print 'hello'

LOG_SHORT_NAMES

默認: False

如果True,日志將僅包含根路徑究恤。如果設置為穗熬,False 則它顯示負責日志輸出的組件

MEMDEBUG_ENABLED

默認: False

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

MEMDEBUG_NOTIFY

默認: []

當啟用內(nèi)存調(diào)試時丁溅,如果此設置不為空唤蔗,則會將內(nèi)存報告發(fā)送到指定的地址,否則報告將寫入日志。

例:

MEMDEBUG_NOTIFY = ['user@example.com']

MEMUSAGE_ENABLED

默認: False

范圍: scrapy.extensions.memusage

是否啟用內(nèi)存使用擴展妓柜,當超過內(nèi)存限制時關閉Scrapy進程箱季,并在發(fā)生這種情況時通過電子郵件通知。

請參閱內(nèi)存使用擴展棍掐。

MEMUSAGE_LIMIT_MB

默認: 0

范圍: scrapy.extensions.memusage

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

請參閱內(nèi)存使用擴展掘殴。

MEMUSAGE_CHECK_INTERVAL_SECONDS

新版本1.1。

默認: 60.0

范圍: scrapy.extensions.memusage

內(nèi)存使用擴展 檢查當前內(nèi)存使用情況粟誓,相對于限制由設置 MEMUSAGE_LIMIT_MBMEMUSAGE_WARNING_MB在固定的時間間隔奏寨。

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

請參閱內(nèi)存使用擴展鹰服。

MEMUSAGE_NOTIFY_MAIL

默認: False

范圍: scrapy.extensions.memusage

要達到內(nèi)存限制時通知的電子郵件列表病瞳。

例:

MEMUSAGE_NOTIFY_MAIL = ['user@example.com']

請參閱內(nèi)存使用擴展

MEMUSAGE_REPORT

默認: False

范圍: scrapy.extensions.memusage

是否在每個爬蟲關閉后發(fā)送內(nèi)存使用報告悲酷。

請參閱內(nèi)存使用擴展套菜。

MEMUSAGE_WARNING_MB

默認: 0

范圍: scrapy.extensions.memusage

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

NEWSPIDER_MODULE

默認: ''

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

例:

NEWSPIDER_MODULE = 'mybot.spiders_dev'

RANDOMIZE_DOWNLOAD_DELAY

默認: True

如果啟用嚎于,Scrapy會在從同一網(wǎng)站獲取請求時等待隨機時間(介于0.5 * DOWNLOAD_DELAY和1.5 *之間DOWNLOAD_DELAY)。

該隨機化降低了由分析請求的站點檢測(并隨后阻塞)爬行器的機會挟冠,所述站點在它們的請求之間的時間內(nèi)尋找統(tǒng)計上顯著的相似性于购。

隨機化策略與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

相對于原始請求調(diào)整重定向請求優(yōu)先級:

  • 正優(yōu)先級調(diào)整(默認)意味著更高的優(yōu)先級肤视。
  • 負優(yōu)先級調(diào)整意味著較低優(yōu)先級档痪。

RETRY_PRIORITY_ADJUST

默認: -1

范圍: scrapy.downloadermiddlewares.retry.RetryMiddleware

調(diào)整相對于原始請求的重試請求優(yōu)先級:

  • 正優(yōu)先級調(diào)整意味著更高的優(yōu)先級。
  • 負優(yōu)先級調(diào)整(默認)表示較低優(yōu)先級邢滑。

ROBOTSTXT_OBEY

默認: False

范圍: scrapy.downloadermiddlewares.robotstxt

如果啟用腐螟,Scrapy會尊重robots.txt政策。有關詳細信息困后,請參閱 RobotsTxtMiddleware乐纸。

注意

雖然默認值是False由于歷史原因,默認情況下在settings.py文件中通過命令生成此選項摇予。scrapy startproject

SCHEDULER

默認: 'scrapy.core.scheduler.Scheduler'

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

SCHEDULER_DEBUG

默認: False

設置True將記錄有關請求調(diào)度程序的調(diào)試信息。如果請求無法序列化到磁盤趾盐,則當前日志(僅一次)。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

默認: 'scrapy.squeues.PickleLifoDiskQueue'

將由調(diào)度程序使用的磁盤隊列的類型救鲤。其它可用的類型有 scrapy.squeues.PickleFifoDiskQueuescrapy.squeues.MarshalFifoDiskQueue秩冈, scrapy.squeues.MarshalLifoDiskQueue本缠。

SCHEDULER_MEMORY_QUEUE

默認: 'scrapy.squeues.LifoMemoryQueue'

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

SCHEDULER_PRIORITY_QUEUE

默認: 'queuelib.PriorityQueue'

調(diào)度程序使用的優(yōu)先級隊列的類型丹锹。

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。例如衬鱼,要禁用內(nèi)置 ScrapesContract业筏,將此放在您的settings.py

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

SPIDER_LOADER_CLASS

默認: 'scrapy.spiderloader.SpiderLoader'

將用于加載爬蟲程序的類,它必須實現(xiàn) SpiderLoader API鸟赫。

SPIDER_LOADER_WARN_ONLY

新版本1.3.3蒜胖。

默認: False

默認情況下消别,當scrapy嘗試從中導入爬蟲類時SPIDER_MODULES,如果有任何ImportError異常翠勉,它將大聲失敗妖啥。但是你可以選擇沉默此異常,并通過設置將其變成一個簡單的警告对碌。SPIDER_LOADER_WARN_ONLY = True

注意

有些scrapy命令使用此設置運行True 已經(jīng)(即他們只會發(fā)出警告并不會失斁J),因為他們實際上并不需要加載爬蟲類的工作: 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中默認啟用的爬蟲中間件的字典及其順序骑脱。低訂單更靠近發(fā)動機菜枷,高訂單更接近爬蟲。有關更多信息叁丧,請參閱激活爬蟲中間件啤誊。

SPIDER_MODULES
默認: []

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

例:

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

STATS_CLASS

默認: 'scrapy.statscollectors.MemoryStatsCollector'

用于收集統(tǒng)計信息的類拥娄,誰必須實現(xiàn) Stats Collector API蚊锹。

STATS_DUMP
默認: True

一旦爬蟲完成,轉(zhuǎn)儲Scrapy統(tǒng)計(到Scrapy日志)稚瘾。

更多信息請參閱:統(tǒng)計數(shù)據(jù)收集牡昆。

STATSMAILER_RCPTS

默認:( []空列表)

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

TELNETCONSOLE_ENABLED

默認: True

布爾值丢烘,指定是否 啟用telnet控制臺(如果其擴展名也啟用)。

TELNETCONSOLE_PORT

默認: [6023, 6073]

用于telnet控制臺的端口范圍些椒。如果設置為None或0播瞳,則使用動態(tài)分配的端口。有關詳細信息免糕,請參閱 telnet控制臺狐史。

TEMPLATES_DIR

默認值:templates dir里面的scrapy模塊

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

項目名稱不得與子目錄中的自定義文件或目錄的名稱沖突project说墨。

URLLENGTH_LIMIT

默認: 2083

范圍: spidermiddlewares.urllength

允許抓取網(wǎng)址的最大網(wǎng)址長度骏全。有關此設置的默認值的詳細信息,請參閱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
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末熄捍,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子母怜,更是在濱河造成了極大的恐慌余耽,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件苹熏,死亡現(xiàn)場離奇詭異碟贾,居然都是意外死亡,警方通過查閱死者的電腦和手機轨域,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門袱耽,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人干发,你說我怎么就攤上這事歹颓”傧” “怎么了备籽?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵裆蒸,是天一觀的道長。 經(jīng)常有香客問我必峰,道長洪唐,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任自点,我火速辦了婚禮桐罕,結(jié)果婚禮上脉让,老公的妹妹穿的比我還像新娘桂敛。我一直安慰自己,他們只是感情好溅潜,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布术唬。 她就那樣靜靜地躺著,像睡著了一般滚澜。 火紅的嫁衣襯著肌膚如雪粗仓。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天设捐,我揣著相機與錄音借浊,去河邊找鬼。 笑死萝招,一個胖子當著我的面吹牛蚂斤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播槐沼,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼曙蒸,長吁一口氣:“原來是場噩夢啊……” “哼捌治!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起纽窟,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤肖油,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后臂港,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體森枪,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年趋艘,在試婚紗的時候發(fā)現(xiàn)自己被綠了疲恢。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡瓷胧,死狀恐怖显拳,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情搓萧,我是刑警寧澤杂数,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站瘸洛,受9級特大地震影響揍移,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜反肋,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一那伐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧石蔗,春花似錦罕邀、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至棍厌,卻和暖如春肾胯,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背耘纱。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工敬肚, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人束析。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓艳馒,卻偏偏與公主長得像,于是被迫代替她去往敵國和親畸陡。 傳聞我的和親對象是個殘疾皇子鹰溜,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

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