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` 获取,并在爬虫初始化后设置在基类爬虫中。

以下示例演示了这一点。

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。

默认值:None

2

AWS_SECRET_ACCESS_KEY

用于访问 Amazon Web Services。

默认值:None

3

BOT_NAME

机器人名称,用于构建 User-Agent。

默认值:'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` 命令编辑爬虫。

默认值:取决于环境

30

EXTENSIONS

包含在项目中启用的扩展的字典。

默认值:{}

31

EXTENSIONS_BASE

包含 Scrapy 默认启用的内置扩展的字典。

默认值:{ '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

定义是否启用telnet控制台。

默认值:True

67

TELNETCONSOLE_PORT

定义telnet控制台的端口。

默认值: [6023, 6073]

68

TEMPLATES_DIR

包含创建新项目时可使用的模板的目录。

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

69

URLLENGTH_LIMIT

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

默认值:2083

70

USER_AGENT

定义抓取网站时使用的用户代理。

默认值:"Scrapy/VERSION (+https://scrapy.net.cn)"

更多Scrapy设置,请访问此链接

广告