扫码一下
查看教程更方便
Scrapy 组件的行为可以使用 Scrapy 设置进行修改。 设置也可以选择当前激活的Scrapy项目,以防你有多个Scrapy项目。
当你废弃一个网站时,你必须通知 Scrapy 你正在使用的设置。 为此,应使用环境变量 SCRAPY_SETTINGS_MODULE
,其值应采用 Python 路径语法。
下表显示了一些可以用来填充设置的机制
序号 | 机制 | 描述 |
---|---|---|
1 | 命令行选项 | 在这里,传递的参数通过覆盖其他选项而具有最高优先级。 -s 用于覆盖一个或多个设置。
|
2 | 每个蜘蛛的设置 | 蜘蛛可以有自己的设置,通过使用属性 custom_settings 覆盖项目的设置。
|
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_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 的 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 请求的默认标头。 默认值 −
|
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 | 它是一个包含默认启用的下载器中间件的字典。 默认值 −
|
20 | DOWNLOADER_STATS | 此设置用于启用下载器统计信息。 默认值: True |
21 | DOWNLOAD_DELAY | 它定义了下载器从站点下载页面之前的总时间。 默认值: 0 |
22 | DOWNLOAD_HANDLERS | 它是一个带有下载处理程序的字典。 默认值: {} |
23 | DOWNLOAD_HANDLERS_BASE | 它是一个带有默认启用的下载处理程序的字典。 默认值 −
|
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 中启用。 默认值 −
|
59 | SPIDER_LOADER_CLASS | 它定义了一个实现 SpiderLoader API 的类来加载蜘蛛。默认值: 'scrapy.spiderloader.SpiderLoader' |
60 | SPIDER_MIDDLEWARES | 它是一本包含蜘蛛中间件的字典。 默认值: {} |
61 | SPIDER_MIDDLEWARES_BASE | 它是一个包含蜘蛛中间件的字典,默认情况下在 Scrapy 中启用。 默认值 −
|
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 设置,请转到此链接