Python版本管理:pyenv和pyenv-virtualenv
Scrapy爬蟲入門教程一 安裝和基本使用
Scrapy爬蟲入門教程二 官方提供Demo
Scrapy爬蟲入門教程三 命令行工具介紹和示例
Scrapy爬蟲入門教程四 Spider(爬蟲)
Scrapy爬蟲入門教程五 Selectors(選擇器)
Scrapy爬蟲入門教程六 Items(項目)
Scrapy爬蟲入門教程七 Item Loaders(項目加載器)
Scrapy爬蟲入門教程八 交互式 shell 方便調試
Scrapy爬蟲入門教程九 Item Pipeline(項目管道)
Scrapy爬蟲入門教程十 Feed exports(導出文件)
Scrapy爬蟲入門教程十一 Request和Response(請求和響應)
Scrapy爬蟲入門教程十二 Link Extractors(鏈接提取器)
開發環境:
Python 3.6.0 版本
(當前最新)
Scrapy 1.3.2 版本
(當前最新)
設置
Scrapy設置允許您自定義所有Scrapy組件的行為,包括核心,擴展,管道和爬蟲本身。
設置的基礎結構提供了鍵值映射的全局命名空間,代碼可以使用它從中提取配置值。可以通過不同的機制來填充設置,這將在下面描述。
這些設置也是選擇當前活動Scrapy項目的機制(如果您有很多)。
有關可用內置設置的列表,請參閱:內置設置參考。
指定設置
當你使用Scrapy,你必須告訴它你使用哪些設置。您可以通過使用環境變量來執行此操作SCRAPY_SETTINGS_MODULE
。
值SCRAPY_SETTINGS_MODULE
應該在Python路徑語法中,例如 myproject.settings
。請注意,設置模塊應該在Python 導入搜索路徑上。
填充設置
可以使用不同的機制來填充設置,每個機制具有不同的優先級。這里是按優先級降序排列的列表:
- 命令行選項(最高優先級)
- 每個爬蟲的設置
- 項目設置模塊
- 每命令的默認設置
- 默認全局設置(優先級較低)
這些設置源的數量在內部處理,但可以使用API??調用進行手動處理。請參閱 設置API主題以供參考。
這些機制在下面更詳細地描述。
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!")
@classmethod
def from_crawler(cls, crawler):
settings = crawler.settings
return 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'
:映射到OpenSSLTLS_method()
(akaSSLv23_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