scrapy0.24文档解读之setting配置(二)

本文档详细解读了Scrapy 0.24的settings配置,包括DOWNLOAD_MAXSIZE、DUPEFILTER_CLASS、EXTENSIONS、LOGGING相关设置、内存管理、重定向策略、SPIDER_MIDDLEWARES等多个关键配置选项,帮助理解并优化Scrapy项目配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

上一篇写了setting的一部分设置,继续
1:DOWNLOAD_MAXSIZE#设置response大小

    设置将要下载的response最大size,如果想禁用设置为0
    #Default:1073741824 (1024MB)
    也可以在爬虫中使用download_maxsize属性设置

2:DOWNLOAD_WARNSIZE

     #警告还是预告??的大小
     ##Default: 33554432 (32Mb)
     爬虫也可以设置

3:DUPEFILTER_CLASS#设置检测过滤重复请求的类

    默认: 'scrapy.dupefilter.RFPDupeFilter'
    用于设置检测过滤重复请求的类。
    默认的 (RFPDupeFilter) 过滤器基于scrapy.utils.request.request_fingerprint 函数生成的请求fingerprint(指纹)。 如果您需要修改检测的方式,您可以继承 RFPDupeFilter 并覆盖其 request_fingerprint 方法。 该方法接收 Request 对象并返回其fingerprint(一个字符串)。

4:DUPEFILTER_DEBUG##记录重复的请求,这是执行记录的行为

    ###默认: False    
    ##默认情况下, RFPDupeFilter 只记录第一次重复的请求。 
    设置 DUPEFILTER_DEBUG 为 True 将会使其记录所有重复的requests

5:EDITOR###设置编辑器?没用感觉

    默认: depends on the environment
    ###执行 edit 命令编辑spider时使用的编辑器。 
    其默认为 EDITOR 环境变量。如果该变量未设置,其默认为 vi (Unix系统) 或者 IDLE编辑器(Windows)。

6:EXTENSIONS##扩展的是否启用以及顺序

    ###默认: {}###保存项目中启用的扩展插件及其顺序的字典。

7:EXTENSIONS_BASE##一些默认开启的扩展插件,如要关闭将对应的值变成none,但是只能在扩展字典中设置

   默认:
   {
       'scrapy.contrib.corestats.CoreStats': 0,
       'scrapy.telnet.TelnetConsole': 0,
       'scrapy.contrib.memusage.MemoryUsage': 0,
       'scrapy.contrib.memdebug.MemoryDebugger': 0,
       'scrapy.contrib.closespider.CloseSpider': 0,
       'scrapy.contrib.feedexport.FeedExporter': 0,
       'scrapy.contrib.logstats.LogStats': 0,
       'scrapy.contrib.spiderstate.SpiderState': 0,
       'scrapy.contrib.throttle.AutoThrottle': 0,
   }
   可用的插件列表。需要注意,有些插件需要通过设定来启用。默认情况下, 该设定包含所有稳定(stable)的内置插件。

8:ITEM_PIPELINES

 默认: {}
 保存项目中启用的pipeline及其顺序的字典。该字典默认为空,值(value)任意。 不过值(value)习惯设定在0-1000范围内。
 为了兼容性,ITEM_PIPELINES 支持列表,不过已经被废弃了。
 样例:
 ITEM_PIPELINES = {
     'mybot.pipelines.validate.ValidateMyItem': 300,
     'mybot.pipelines.validate.StoreMyItem': 800,
 }

9:ITEM_PIPELINES_BASE

    ####默认: {}###保存项目中默认启用的pipeline的字典。 永远不要在项目中修改该设定,而是修改 ITEM_PIPELINES 。

10:LOG_ENABLED###默认: True###是否启用logging

11:LOG_ENCODING###默认: ‘utf-8’###logging使用的编码。

12:LOG_FILE###默认: None

    ##logging输出的文件名。如果为None,则使用标准错误输出(standard error)。

加1:LOG_FORMAT##格式化输出log的字符串,有默认值

Default: '%(asctime)s [%(name)s] %(levelname)s: %(message)s'

加2:LOG_DATEFORMAT##log输出时的格式化输出

    Default: '%Y-%m-%d %H:%M:%S'
    输出位置在log_format输出位置的asctime处

13:LOG_LEVEL###默认: ‘DEBUG’

    ###log的最低级别。可选的级别有: CRITICAL、 ERROR、WARNING、INFO、DEBUG。更多内容请查看 Logging 。

14:LOG_STDOUT####默认: False此处决定log的输出位置

    ###如果为 True ,进程所有的标准输出(及错误)将会被重定向到log中。例如, 执行 print 'hello' ,其将会在Scrapy log中显示。

15:MEMDEBUG_ENABLED###默认: False##是否启用内存调试(memory debugging)。

16:MEMDEBUG_NOTIFY##启用则要制定内存报告输出位置否则为空输出到log中

   默认: []
   如果该设置不为空,当启用内存调试时将会发送一份内存报告到指定的地址;否则该报告将写到log中。
   样例:
   MEMDEBUG_NOTIFY = ['user@example.com']

17:MEMUSAGE_ENABLED##启用内存插件

   默认: False
   Scope: scrapy.contrib.memusage
   是否启用内存使用插件。当Scrapy进程占用的内存超出限制时,该插件将会关闭Scrapy进程, 同时发送email进行通知。

18:MEMUSAGE_LIMIT_MB##设置最大内存限制默认为0,不限制

 默认: 0
 Scope: scrapy.contrib.memusage
 在关闭Scrapy之前所允许的最大内存数(单位: MB)(如果 MEMUSAGE_ENABLED为True)。 如果为0,将不做限制。

19:MEMUSAGE_NOTIFY_MAIL##达到内存发送邮件,邮件设置

  默认: False
  Scope: scrapy.contrib.memusage
  达到内存限制时通知的email列表。
  Example:
  MEMUSAGE_NOTIFY_MAIL = ['user@example.com']

20:MEMUSAGE_REPORT##设置spider关闭时是否发送报告

 默认: False
 Scope: scrapy.contrib.memusage
 每个spider被关闭时是否发送内存使用报告。

21: MEMUSAGE_WARNING_MB前提启用内存扩展

 默认: 0
 Scope: scrapy.contrib.memusage
 在发送警告email前所允许的最大内存数(单位: MB)(如果 MEMUSAGE_ENABLED为True)。 如果为0,将不发送警告。

22: NEWSPIDER_MODULE##此处应该在genspider命令之后会覆盖默认值

 默认: ' '
 使用 genspider 命令创建新spider的模块。
 样例:
 NEWSPIDER_MODULE = 'mybot.spiders_dev'

23:RANDOMIZE_DOWNLOAD_DELAY##访问同一站点是访问随机延迟

     默认: True
     如果启用,当从相同的网站获取数据时,Scrapy将会等待一个随机的值 (0.5到1.5之间的一个随机值 * DOWNLOAD_DELAY)。
     该随机值降低了crawler被检测到(接着被block)的机会。某些网站会分析请求, 查找请求之间时间的相似性。
     随机的策略与 wget --random-wait 选项的策略相同。
     若 DOWNLOAD_DELAY 为0(默认值),该选项将不起作用

加3:REACTOR_THREADPOOL_MAXSIZE##应该是返回输出的线程池,最大默认10个,报错dns解析情况,存储等,io不足可调大这个值

    Default: 10
    扭曲反应器螺纹池尺寸的最大极限。这是一个常用的多线程线程池。线程DNS解析器,BulkFieldSt存储,S3FilesStore只是举几个例子。如果您遇到阻塞IO不足的问题,则增加该值

24:REDIRECT_MAX_TIMES##允许重定向最大次数,程序有限性

 默认: 20
 定义request允许重定向的最大次数。超过该限制后该request直接返回获取到的结果。 对某些任务我们使用Firefox默认值。

25:REDIRECT_MAX_METAREFRESH_DELAY###限制自动重定向的延迟时间

 默认: 100
 有些网站使用 meta-refresh 重定向到session超时页面, 因此我们限制自动重定向到最大延迟(秒)。

26:REDIRECT_PRIORITY_ADJUST##修改重定向请求相对于原始请求的优先级

默认: +2
修改重定向请求相对于原始请求的优先级。 负数意味着更多优先级。

27:ROBOTSTXT_OBEY###尊重robots,这个好吧

默认: False
Scope: scrapy.contrib.downloadermiddleware.robotstxt
如果启用,Scrapy将会尊重 robots.txt策略。更多内容请查看 RobotsTxtMiddleware 。

28:SCHEDULER#这个还是不要改了

###默认: 'scrapy.core.scheduler.Scheduler'###用于爬取的调度器

29:SPIDER_CONTRACTS

 默认:{}
 保存项目中启用用于测试spider的scrapy contract及其顺序的字典。 更多内容请参考 Spiders Contracts 。

30:PIDER_CONTRACTS_BASE####启用的scrapy contract的字典

     默认:
     {
         'scrapy.contracts.default.UrlContract' : 1,
         'scrapy.contracts.default.ReturnsContract': 2,
         'scrapy.contracts.default.ScrapesContract': 3,
     }
     保存项目中默认启用的scrapy contract的字典。 永远不要在项目中修改该设定,而是修改 SPIDER_CONTRACTS 。更多内容请参考 Spiders Contracts 。

加4:SPIDER_LOADER_CLASS使用spider loader机制时的类,不要改

    Default: 'scrapy.spiderloader.SpiderLoader'

31:SPIDER_MIDDLEWARES##spider中间件

 默认:: {}
 保存项目中启用的下载中间件及其顺序的字典。 

32:SPIDER_MIDDLEWARES_BASEspider默认中间件

 默认:
 {
      'scrapy.contrib.spidermiddleware.httperror.HttpErrorMiddleware': 50,
      'scrapy.contrib.spidermiddleware.offsite.OffsiteMiddleware': 500,
      'scrapy.contrib.spidermiddleware.referer.RefererMiddleware': 700,
      'scrapy.contrib.spidermiddleware.urllength.UrlLengthMiddleware': 800,
      'scrapy.contrib.spidermiddleware.depth.DepthMiddleware': 900,
 }
   保存项目中默认启用的spider中间件的字典。 永远不要在项目中修改该设定,而是修改 SPIDER_MIDDLEWARES 。

33:SPIDER_MODULES### Scrapy搜索spider的模块列表,就是爬虫列表

  默认: []。
  样例:
  SPIDER_MODULES = ['mybot.spiders_prod', 'mybot.spiders_dev']

34:STATS_CLASS## 收集数据的类,这是默认的就不要改了

 默认: 'scrapy.statscol.MemoryStatsCollector'
 收集数据的类。该类必须实现 状态收集器(Stats Collector) API

35:STATS_DUMP####默认: True###当spider结束时dump Scrapy状态数据 (到Scrapy log中)。

36:STATSMAILER_RCPTS###默认: [] (空list)###spider完成爬取后发送Scrapy数据。

37:TELNETCONSOLE_ENABLED#是否启用终端##默认: True表明 telnet 终端 (及其插件)是否启用的布尔值。

38:TELNETCONSOLE_PORT###默认: [6023, 6073]###telnet终端使用的端口范围。如果设置为 None 或 0 , 则使用动态分配的端口。更多内容请查看 Telnet终端(Telnet Console) 。

39:TEMPLATES_DIR###默认: scrapy模块内部的 templates使用 startproject 命令创建项目时查找模板的目录

40:URLLENGTH_LIMIT

   默认: 2083
    Scope: contrib.spidermiddleware.urllength
    爬取URL的最大长度。

41:USER_AGENT#这还有很多方法
默认: “Scrapy/VERSION (+http://scrapy.org)”
爬取的默认User-Agent,除非被覆盖。

此处了只是简单的搬砖及自己的理解,由于是0.24,不是最新版,以后会慢慢更新上来

还有些是文档中其他组件的设置,可对应自行查看:

    AJAXCRAWL_ENABLED
    AUTOTHROTTLE_DEBUG
    AUTOTHROTTLE_ENABLED
    AUTOTHROTTLE_MAX_DELAY
    AUTOTHROTTLE_START_DELAY
    CLOSESPIDER_ERRORCOUNT
    CLOSESPIDER_ITEMCOUNT
    CLOSESPIDER_PAGECOUNT
    CLOSESPIDER_TIMEOUT
    COMMANDS_MODULE
    COMPRESSION_ENABLED
    COOKIES_DEBUG
    COOKIES_ENABLED
    FEED_EXPORTERS
    FEED_EXPORTERS_BASE
    FEED_EXPORT_FIELDS
    FEED_FORMAT
    FEED_STORAGES
    FEED_STORAGES_BASE
    FEED_STORE_EMPT
    FEED_URI
    FILES_EXPIRES
    FILES_STORE
    HTTPCACHE_DBM_MODULE
    HTTPCACHE_DIR
    HTTPCACHE_ENABLED
    HTTPCACHE_EXPIRATION_SECS
    HTTPCACHE_GZIP
    HTTPCACHE_IGNORE_HTTP_CODES
    HTTPCACHE_IGNORE_MISSING
    HTTPCACHE_IGNORE_SCHEMES
    HTTPCACHE_POLICY
    HTTPCACHE_STORAGE
    HTTPERROR_ALLOWED_CODES
    HTTPERROR_ALLOW_ALL
    IMAGES_EXPIRES
    IMAGES_MIN_HEIGHT
    IMAGES_MIN_WIDTH
    IMAGES_STORE
    IMAGES_THUMBS
    MAIL_FROM
    MAIL_HOST
    MAIL_PASS
    MAIL_PORT
    MAIL_SSL
    MAIL_TLS
    MAIL_USER
    METAREFRESH_ENABLED
    REDIRECT_ENABLED
    REDIRECT_MAX_METAREFRESH_DELAY
    REDIRECT_MAX_TIMES
    REFERER_ENABLED
    RETRY_HTTP_CODES
    RETRY_TIMES
    TELNETCONSOLE_HOST
    TELNETCONSOLE_PORT
    WEBSERVICE_ENABLED
    WEBSERVICE_HOST
    WEBSERVICE_LOGFILE
    WEBSERVICE_PORT
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值