Scrapy Settings 内置设置参考
在settings.py文件中,有内置的设置,按字母顺序排列,以及它们的默认值和它们的应用范围,本篇列出一些常用的内置设置。
BOT_NAME
项目名称,此名称也用于日志记录,默认: scrapybot
CONCURRENT_ITEMS
设置item pipeline同时(并发)处理每个respose的item的最大数,默认:100
CONCURRENT_REQUESTS
scrapy downloader(下载器)执行的并发请求最大数量,默认:16
CONCURRENT_REQUESTS_PER_DOMAIN
任何单个域执行的并发请求的最大数量,默认:8
CONCURRENT_REQUESTS_PER_IP
任何单个IP执行的并发求的最大数量,而使用该设置,并发限制将适用于每个 IP,而不是每个域,默认0不启用, 此值影响CONCURRENT_REQUESTS_PER_DOMAIN和DOWNLOAD_DELAY
DEFAULT_REQUEST_HEADERS
请求的默认标头(http request使用的默认header),cookie不在其中设置:
{ 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'en', }
DEPTH_LIMIT
深度限制,设置抓取网站最大允许的深度值。默认为0,表示没有限制。
DOWNLOAD_DELAY:
下载延时秒数,下载器在下载同一个网站时需要等待的时间间隔,用来限制爬取速度,减轻服务器压力,默认值为0,同时也支持小数。等待的时间间隔非固定时间,0.5 * x或者1.5 * x
DEPTH_PRIORITY
深度优先级,一个整数值,用于根据其深度调整request优先级,随着深度的增加,优先级会降低。调整如下:
request.priority = request.priority - ( depth * DEPTH_PRIORITY )
DOWNLOADER_CLIENT_TLS_METHOD
设置(默认 HTTP/1.1)下载器使用的 TLS/SSL 方法,默认TLS。取值有TLS、TLSv1.1、TLSv1.2
DOWNLOAD_TIMEOUT
设置下载器的超时时间,以秒为单位,默认:180,一般不需要这么长时间等待,30秒足够,有利于重试次数。
这是全局的设置,单独的spider设置,使用 Request.meta
scrapy.Request(url=url,meta={"download_timeout":60})
ITEM_PIPELINES
需要启用的管道,是一个字典类型,默认字典为空,字典中键表示pipeline的名称,值可以是任意值,一般0~1000范围,值越小则优先级越高。如下所示(spider级 管道设置):
custom_settings = { 'ITEM_PIPELINES': {'realtime_python_crawler.pipelines.VendorQuotePlatformPipeline':301}, }
DOWNLOAD_MAXSIZE
下载Respose的最大字节,默认1073741824(1024MB),禁用它设置为0,单独的spider设置,使用 Request.meta的download_maxsize
LOG_ENABLED
设置是否启用logging,默认为True.
LOG_ENCODING
设置logging使用的编码,默认值utf-8
LOG_LEVEL:
设置log的最低日志级别,可选:CRITICAL ERROR WARNING INFO DEBUG 默认为DEBUG
USER_AGENT
设置爬取网站时使用的默认User-Agent, 默认值Scarpy/Version(http://scrapy.org)
COOKIES_ENABLED
设置禁用Cookies,为了不让网站根据请求的Cookies判断出用户的身份是爬虫,一般将Cookies的功能禁用。默认True 已禁用。
DOWNLOAD_HANDLERS
默认:{} 是一个字典,包含项目中启用的请求下载器处理程序的字典,在DOWNLOAD_HANDLERS_BASE中,默认如下:
{ 'data': 'scrapy.core.downloader.handlers.datauri.DataURIDownloadHandler', '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', }
不应在项目中修改这个设置,在要修改在DOWNLOAD_HANDLERS修改,通过None来禁用,如禁用ftp,如下所示:
DOWNLOAD_HANDLERS = { 'ftp': None, }
默认的https处理程序使用http1.1,要使用http 2.0:
1)安装Twisted[http2]>=17.9.0以安装在 Twisted 中启用 HTTP/2 支持所需的软件包
2)更新DOWNLOAD_HANDLERS如下:
DOWNLOAD_HANDLERS = { 'https': 'scrapy.core.downloader.handlers.http2.H2DownloadHandler', }