Scrapy – 设置
说明
Scrapy组件的行为可以通过Scrapy设置来修改。如果你有多个Scrapy项目,这些设置也可以选择当前正在运行的Scrapy项目。
指定设置
你必须通知Scrapy你在刮削网站时使用哪种设置。为此,应该使用环境变量 SCRAPY_SETTINGS_MODULE ,其值应该是Python路径语法。
填充设置
下表显示了一些机制,你可以通过这些机制来填充设置−
- 命令行选项 这里,通过的参数优先于其他选项。-s用于覆盖一个或多个设置。
 
scrapy crawl myspider -s LOG_FILE = scrapy.log
- Settings per-spider 蜘蛛可以有自己的设置,通过使用属性custom_settings覆盖项目的设置。
 
class DemoSpider(scrapy.Spider): 
   name = 'demo'  
   custom_settings = { 
      'SOME_SETTING': 'some value', 
   }
- Project settings module 在这里,你可以填充你的自定义设置,如添加或修改settings.py文件中的设置。
 - Default settings per-command 每个Scrapy工具命令都在default_settings属性中定义了自己的设置,以覆盖全局默认设置。
 - Default global settings 这些设置可以在scrapy.settings.default_settings模块中找到。
 
访问设置
它们可以通过self.settings获得,并在初始化后在基础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_ENABLED、ROBOTSTXT_OBEY、ROBOTSTXT_CACHEDIR,等等。
内置设置参考
下表显示了Scrapy的内置设置-
| Sr.No | 设置和描述 | 
|---|---|
| 1 | AWS_ACCESS_KEY_ID 它用于访问亚马逊网络服务。默认值: 无 | 
| 2 | AWS_SECRET_ACCESS_KEY 它用于访问亚马逊网络服务。默认值: 无 | 
| 3 | BOT_NAME 它是机器人的名称,可用于构建用户代理。默认值:’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请求的默认头。默认值 – | 
| 10 | DEPTH_LIMIT 蜘蛛爬行任何网站的最大深度。默认值:0 | 
| 11 | DEPTH_PRIORITY 它是一个整数,用于根据深度改变请求的优先级。默认值:0 | 
| 12 | DEPTH_STATS 它说明是否收集深度统计。缺省值: 真 | 
| 13 | DEPTH_STATS_VERBOSE 启用该设置后,将在统计中收集每个粗略深度的请求数。默认值是 默认值: False | 
| 14 | DNSCACHE_ENABLED 用于启用内存缓存中的DNS。默认值: 真 | 
| 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 该设置用于启用下载器的统计信息。默认值: 真 | 
| 21 | DOWNLOAD_DELAY 它定义了下载器从网站下载页面前的总时间。默认值:0 | 
| 22 | DOWNLOAD_HANDLERS 它是一个包含下载处理程序的字典。默认值: {} | 
| 23 | DOWNLOAD_HANDLERS_BASE 它是一个带有下载处理程序的字典,默认为启用。默认值 – `{ ‘文件’: ‘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 它用于使用编辑命令来编辑蜘蛛。默认值: 取决于环境 | 
| 30 | EXTENSIONS 它是一个拥有项目中启用的扩展的字典。默认值: {} | 
| 31 | EXTENSIONS_BASE 它是一个拥有内置扩展的字典。默认值: { ‘scrapy.extensions.corestats.CoreStats’: 0, } | 
| 32 | FEED_TEMPDIR 它是一个目录,用于设置爬虫临时文件的自定义文件夹。 | 
| 33 | ITEM_PIPELINES 它是一个有管道的字典。默认值: {} | 
| 34 | LOG_ENABLED 它定义了是否要启用日志记录。默认值: 真 | 
| 35 | LOG_ENCODING 它定义了用于日志记录的编码类型。默认值:’utf-8’。 | 
| 36 | LOG_FILE 它是用于输出日志的文件名。默认值: 无 | 
| 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从网站下载请求时的一个随机等待时间量。默认值: 真 | 
| 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.contract.default.UrlContract' : 1, 'scrapy.contract.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 “时,将统计信息转储到日志中。默认值: 真 | 
| 65 | STATSMAILER_RCPTS 一旦蜘蛛完成搜刮,Scrapy会使用这个设置来发送统计信息。默认值: [] | 
| 66 | TELNETCONSOLE_ENABLED 它定义了是否启用telnetconsole。默认值为 真 | 
| 67 | TELNETCONSOLE_PORT 它定义了一个用于telnet控制台的端口。默认值: [6023, 6073] | 
| 68 | TEMPLATES_DIR 它是一个包含模板的目录,可以在创建新项目时使用。默认值:scrapy模块内的templates目录 | 
| 69 | URLLENGTH_LIMIT 它定义了允许抓取的URL长度的最大限制。默认值:2083 | 
| 70 | USER_AGENT 它定义了抓取网站时要使用的用户代理。默认值: “Scrapy/VERSION (+http://scrapy.org)” | 
极客教程