Scrapy-设置


描述

可以使用 Scrapy 设置来修改 Scrapy 组件的Behave。如果您有多个 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 获得,并在初始化后在基础蜘蛛中设置。

以下示例演示了这一点。

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 的内置设置 -

先生编号 设置及说明
1

AWS_ACCESS_KEY_ID

它用于访问 Amazon Web Services。

默认值:无

2

AWS_SECRET_ACCESS_KEY

它用于访问 Amazon Web Services。

默认值:无

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

深度限制

蜘蛛抓取任何网站的最大深度。

默认值:0

11

深度优先级

它是一个整数,用于根据深度改变请求的优先级。

默认值:0

12

深度统计

它说明是否收集深度统计数据。

默认值:True

13

DEPTH_STATS_VERBOSE

启用此设置后,请求数将收集在每个详细深度的统计信息中。

默认值:False

14

DNSCACHE_ENABLED

它用于启用内存缓存中的 DNS。

默认值:True

15

DNSCACHE_SIZE

它定义了内存缓存中 DNS 的大小。

默认值:10000

16

DNS超时

它用于设置 DNS 处理查询的超时时间。

默认值:60

17 号

下载器

它是一个用于爬行过程的下载器。

默认值:'scrapy.core.downloader.Downloader'

18

下载器_中间件

它是一个包含下载器中间件及其命令的字典。

默认值: {}

19

DOWNLOADER_MIDDLEWARES_BASE

它是一个包含默认启用的下载器中间件的字典。

默认值 -

{ 'scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware': 100, }
20

下载者统计

此设置用于启用下载器统计信息。

默认值:True

21

下载延迟

它定义了下载程序从站点下载页面之前的总时间。

默认值:0

22

下载处理程序

它是一本带有下载处理程序的字典。

默认值: {}

23

下载处理程序库

它是一个带有默认启用的下载处理程序的字典。

默认值 -

{ 'file': 'scrapy.core.downloader.handlers.file.FileDownloadHandler', }
24

下载超时

这是下载程序在超时之前等待的总时间。

默认值:180

25

下载最大尺寸

它是下载器下载的最大响应大小。

默认值:1073741824 (1024MB)

26

下载警告大小

它定义了下载器警告的响应大小。

默认值:33554432 (32MB)

27

DUPEFILTER_CLASS

它是一个用于检测和过滤重复请求的类。

默认值:'scrapy.dupefilters.RFPDupeFilter'

28

DUPEFILTER_DEBUG

当设置为 true 时,此设置会记录所有重复的过滤器。

默认值:False

29

编辑

它用于使用编辑命令编辑蜘蛛。

默认值:取决于环境

30

扩展

它是一个字典,具有在项目中启用的扩展。

默认值: {}

31

扩展库

它是一本具有内置扩展的字典。

默认值:{ 'scrapy.extensions.corestats.CoreStats': 0, }

32

FEED_TEMPDIR

用于设置自定义的存放爬虫临时文件的目录。

33

ITEM_PIPELINES

它是一本具有管道的字典。

默认值: {}

34

日志启用

它定义是否启用日志记录。

默认值:True

35

LOG_ENCODING

它定义了用于日志记录的编码类型。

默认值:'utf-8'

36

日志档案

它是用于日志输出的文件的名称。

默认值:无

37

日志格式

它是一个字符串,可以使用它来格式化日志消息。

默认值:'%(asctime)s [%(name)s] %(levelname)s: %(message)s'

38

LOG_DATEFORMAT

它是一个可以格式化日期/时间的字符串。

默认值:'%Y-%m-%d %H:%M:%S'

39

日志级别

它定义了最低日志级别。

默认值:“调试”

40

日志标准输出

如果此设置设置为 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

随机下载延迟

它定义了 Scrapy 在从站点下载请求时等待的随机时间量。

默认值:True

51

REACTOR_THREADPOOL_MAXSIZE

它定义了反应器线程池的最大大小。

默认值:10

52

REDIRECT_MAX_TIMES

它定义了请求可以重定向的次数。

默认值:20

53

重定向_优先级_调整

设置此设置后,将调整请求的重定向优先级。

默认值:+2

54

重试优先级调整

设置此设置后,将调整请求的重试优先级。

默认值:-1

55

ROBOTSTXT_服从

当设置为true时,Scrapy 遵守 robots.txt 策略。

默认值:False

56

调度程序

它定义了用于爬网目的的调度程序。

默认值:'scrapy.core.scheduler.Scheduler'

57

SPIDER_合同

它是项目中的一个字典,有蜘蛛合约来测试蜘蛛。

默认值: {}

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_中间件

它是一个包含蜘蛛中间件的字典。

默认值: {}

61

SPIDER_MIDDLEWARES_BASE

它是一个保存蜘蛛中间件的字典,默认在 Scrapy 中启用。

默认值 -

{ 
   'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware': 50, 
}
62

SPIDER_MODULES

它是包含 Scrapy 将查找的蜘蛛的模块列表。

默认值: []

63

统计类

它是一个实现Stats Collector API 来收集统计数据的类。

默认值:'scrapy.statscollectors.MemoryStatsCollector'

64

统计转储

当此设置设置为 true 时,会将统计信息转储到日志中。

默认值:True

65

STATSMAILER_RCPTS

一旦蜘蛛完成抓取,Scrapy 使用此设置发送统计数据。

默认值: []

66

TELNETCONSOLE_ENABLED

它定义是否启用telnetconsole。

默认值:True

67

TELNETCONSOLE_PORT

它定义了 telnet 控制台的端口。

默认值:[6023, 6073]

68

模板目录

它是一个包含创建新项目时可以使用的模板的目录。

默认值:scrapy模块内的templates目录

69

网址LENGTH_LIMIT

它定义了允许抓取的 URL 的最大 URL 长度限制。

默认值:2083

70

用户代理

它定义了爬网站点时要使用的用户代理。

默认值:“Scrapy/VERSION (+http://scrapy.org)”

对于其他 Scrapy 设置,请访问此链接