Scrapy 设置

Scrapy 组件的行为可以使用 Scrapy 设置进行修改。 设置也可以选择当前激活的Scrapy项目,以防你有多个Scrapy项目。


指定设置

当你废弃一个网站时,你必须通知 Scrapy 你正在使用的设置。 为此,应使用环境变量 SCRAPY_SETTINGS_MODULE,其值应采用 Python 路径语法。


填充设置

下表显示了一些可以用来填充设置的机制

序号 机制 描述
1 命令行选项 在这里,传递的参数通过覆盖其他选项而具有最高优先级。 -s 用于覆盖一个或多个设置。
$ scrapy crawl myspider -s LOG_FILE = scrapy.log
2 每个蜘蛛的设置 蜘蛛可以有自己的设置,通过使用属性 custom_settings 覆盖项目的设置。
 class DemoSpider(scrapy.Spider): 
  name = 'demo'
   custom_settings = {
  'SOME_SETTING': 'some value',
   }
3 项目设置模块 在这里,我们可以填充自定义设置,例如添加或修改 settings.py 文件中的设置。
4 每个命令的默认设置 每个 Scrapy 工具命令在 default_settings 属性中定义自己的设置,以覆盖全局默认设置。
5 默认全局设置 这些设置位于 scrapy.settings.default_settings 模块中。

访问设置

它们可以通过 self.settings 获得,并在初始化后在 base spider 中设置。

以下示例演示了这一点。

class DemoSpider(scrapy.Spider): 
   name = 'demo' 
   start_urls = ['http://example.com']  
   def parse(self, response): 
      print("Existing settings: %s" % self.settings.attributes.keys()) 

要在初始化蜘蛛之前使用设置,我们必须在蜘蛛的 _init_() 方法中覆盖 from_crawler 方法。 我们可以通过传递给 from_crawler 方法的属性 scrapy.crawler.Crawler.settings 访问设置。

以下示例演示了这一点。

class MyExtension(object): 
   def __init__(self, log_is_enabled = False): 
      if log_is_enabled: 
         print("Enabled log") 
         @classmethod 
   def from_crawler(cls, crawler): 
      settings = crawler.settings 
      return cls(settings.getbool('LOG_ENABLED')) 

设置名称作为前缀添加到它们配置的组件中。 例如,对于 robots.txt 扩展,设置名称可以是 ROBOTSTXT_ENABLEDROBOTSTXT_OBEYROBOTSTXT_CACHEDIR 等。

内置设置参考

下表为Scrapy内置设置

序号 设置 描述
1 AWS_ACCESS_KEY_ID 它用于访问 Amazon Web Services。
默认值: None
2 AWS_SECRET_ACCESS_KEY 它用于访问 Amazon Web Services。
默认值: None
3 BOT_NAME 它是可用于构建 User-Agent 的 bot 的名称。
默认值: 'scrapybot'
4 CONCURRENT_ITEMS 项目处理器中用于并行处理的最大现有项目数。
默认值: 100
5 CONCURRENT_REQUESTS Scrapy 下载器执行的现有请求的最大数量。
默认值: 16
6 CONCURRENT_REQUESTS_PER_DOMAIN 对任何单个域同时执行的最大现有请求数。
默认值: 8
7 CONCURRENT_REQUESTS_PER_IP 同时对任何单个 IP 执行的现有请求的最大数量。
默认值: 0
8 DEFAULT_ITEM_CLASS 它是一个用于表示项目的类。
默认值: 'scrapy.item.Item'
9 DEFAULT_REQUEST_HEADERS 它是用于 Scrapy 的 HTTP 请求的默认标头。
默认值 −
{  
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,
/;q=0.8', 'Accept-Language': 'en',
}
10 DEPTH_LIMIT 蜘蛛爬行任何站点的最大深度。
默认值: 0
11 DEPTH_PRIORITY 它是一个整数,用于根据深度改变请求的优先级。
默认值: 0
12 DEPTH_STATS 它说明是否收集深度统计数据。
默认值: True
13 DEPTH_STATS_VERBOSE 启用此设置后,请求数将收集在每个详细深度的统计信息中。
默认值: False
14 DNSCACHE_ENABLED 它用于在内存缓存中启用 DNS。
默认值: True
15 DNSCACHE_SIZE 它定义了 DNS 在内存缓存中的大小。
默认值: 10000
16 DNS_TIMEOUT 它用于设置 DNS 处理查询的超时时间。
默认值: 60
17 DOWNLOADER 它是用于抓取过程的下载器。
默认值: 'scrapy.core.downloader.Downloader'
18 DOWNLOADER_MIDDLEWARES 它是一个包含下载器中间件及其命令的字典。
默认值: {}
19 DOWNLOADER_MIDDLEWARES_BASE 它是一个包含默认启用的下载器中间件的字典。
默认值 −
{ 'scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware': 100, }
20 DOWNLOADER_STATS 此设置用于启用下载器统计信息。
默认值: True
21 DOWNLOAD_DELAY 它定义了下载器从站点下载页面之前的总时间。
默认值: 0
22 DOWNLOAD_HANDLERS 它是一个带有下载处理程序的字典。
默认值: {}
23 DOWNLOAD_HANDLERS_BASE 它是一个带有默认启用的下载处理程序的字典。
默认值 −
{ 'file': 'scrapy.core.downloader.handlers.file.FileDownloadHandler', }
24 DOWNLOAD_TIMEOUT 它是下载器在超时之前等待的总时间。
默认值: 180
25 DOWNLOAD_MAXSIZE 它是下载程序下载的最大响应大小。
默认值: 1073741824 (1024MB)
26 DOWNLOAD_WARNSIZE 它定义了下载器警告的响应大小。
默认值: 33554432 (32MB)
27 DUPEFILTER_CLASS 它是一个用于检测和过滤重复请求的类。
默认值: 'scrapy.dupefilters.RFPDupeFilter'
28 DUPEFILTER_DEBUG 当设置为 true 时,此设置会记录所有重复的过滤器。
默认值: False
29 EDITOR 它用于使用 edit 命令编辑蜘蛛。
默认值: Depends on the environment
30 EXTENSIONS 它是一个字典,具有在项目中启用的扩展。
默认值: {}
31 EXTENSIONS_BASE 它是一个具有内置扩展的字典。
默认值: { 'scrapy.extensions.corestats.CoreStats': 0, }
32 FEED_TEMPDIR 用于设置自定义存放爬虫临时文件的目录。
33 ITEM_PIPELINES 这是一个有管道的字典。
默认值: {}
34 LOG_ENABLED 它定义是否启用日志记录。
默认值: True
35 LOG_ENCODING 它定义了用于日志记录的编码类型。
默认值: 'utf-8'
36 LOG_FILE 它是用于日志输出的文件的名称。
默认值: None
37 LOG_FORMAT 它是一个字符串,可以使用它来格式化日志消息。
默认值: '%(asctime)s [%(name)s] %(levelname)s: %(message)s'
38 LOG_DATEFORMAT 它是一个字符串,可以使用它来格式化日期/时间。
默认值: '%Y-%m-%d %H:%M:%S'
39 LOG_LEVEL 它定义了最低日志级别。
默认值: 'DEBUG'
40 LOG_STDOUT 此设置如果设置为 true,我们所有的进程输出都将出现在日志中。
默认值: False
41 MEMDEBUG_ENABLED 它定义是否启用内存调试。
默认值: False
42 MEMDEBUG_NOTIFY 它定义了在启用内存调试时发送到特定地址的内存报告。
默认值: []
43 MEMUSAGE_ENABLED 它定义了当 Scrapy 进程超过内存限制时是否启用内存使用。
默认值: False
44 MEMUSAGE_LIMIT_MB 它定义了允许的内存的最大限制(以兆字节为单位)。
默认值: 0
45 MEMUSAGE_CHECK_INTERVAL_SECONDS 它用于通过设置间隔的长度来检查当前的内存使用情况。
默认值: 60.0
46 MEMUSAGE_NOTIFY_MAIL 它用于在内存达到限制时通过电子邮件列表进行通知。
默认值: False
47 MEMUSAGE_REPORT 它定义是否在关闭每个蜘蛛时发送内存使用报告。
默认值: False
48 MEMUSAGE_WARNING_MB 它定义了在发送警告之前允许的总内存。
默认值: 0
49 NEWSPIDER_MODULE 它是一个使用 genspider 命令创建新蜘蛛的模块。
默认值: ''
50 RANDOMIZE_DOWNLOAD_DELAY 它定义了 Scrapy 在从站点下载请求时等待的随机时间。
默认值: True
51 REACTOR_THREADPOOL_MAXSIZE 它定义了反应器线程池的最大大小。
默认值: 10
52 REDIRECT_MAX_TIMES 它定义了一个请求可以被重定向多少次。
默认值: 20
53 REDIRECT_PRIORITY_ADJUST 设置此设置后,调整请求的重定向优先级。
默认值: +2
54 RETRY_PRIORITY_ADJUST 设置此设置后,调整请求的重试优先级。
默认值: -1
55 ROBOTSTXT_OBEY 当设置为 true 时,Scrapy 遵守 robots.txt 策略。
默认值: False
56 SCHEDULER 它定义了用于爬网目的的调度程序。
默认值: 'scrapy.core.scheduler.Scheduler'
57 SPIDER_CONTRACTS 它是项目中的字典,有蜘蛛合同来测试蜘蛛。
默认值: {}
58 SPIDER_CONTRACTS_BASE 它是一个保存 Scrapy 合约的字典,默认情况下在 Scrapy 中启用。
默认值 −
{ 
'scrapy.contracts.default.UrlContract' : 1,
'scrapy.contracts.default.ReturnsContract': 2,
}
59 SPIDER_LOADER_CLASS 它定义了一个实现 SpiderLoader API 的类来加载蜘蛛。
默认值: 'scrapy.spiderloader.SpiderLoader'
60 SPIDER_MIDDLEWARES 它是一本包含蜘蛛中间件的字典。
默认值: {}
61 SPIDER_MIDDLEWARES_BASE 它是一个包含蜘蛛中间件的字典,默认情况下在 Scrapy 中启用。
默认值 −
{ 
'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware': 50,
}
62 SPIDER_MODULES 它是包含 Scrapy 将寻找的蜘蛛的模块列表。
默认值: []
63 STATS_CLASS 它是一个实现 Stats Collector API 以收集统计信息的类。
默认值: 'scrapy.statscollectors.MemoryStatsCollector'
64 STATS_DUMP 此设置设置为 true 时,会将统计信息转储到日志中。
默认值: True
65 STATSMAILER_RCPTS 一旦蜘蛛完成抓取,Scrapy 使用此设置发送统计数据。
默认值: []
66 TELNETCONSOLE_ENABLED 它定义是否启用 telnetconsole
默认值: True
67 TELNETCONSOLE_PORT 它为 telnet 控制台定义了一个端口。
默认值: [6023, 6073]
68 TEMPLATES_DIR 它是一个包含模板的目录,可以在创建新项目时使用。
默认值: templates directory inside scrapy module
69 URLLENGTH_LIMIT 它定义了允许抓取的 URL 的 URL 长度的最大限制。
默认值: 2083
70 USER_AGENT 它定义了在抓取站点时要使用的用户代理。
默认值: "Scrapy/VERSION (+http://scrapy.org)"

对于其他 Scrapy 设置,请转到此链接

查看笔记

扫码一下
查看教程更方便