- Scrapy 教程
- Scrapy - 首页
- Scrapy 基本概念
- Scrapy - 概述
- Scrapy - 环境
- Scrapy - 命令行工具
- Scrapy - 爬虫 (Spider)
- Scrapy - 选择器
- Scrapy - 项目 (Item)
- Scrapy - 项目加载器 (Item Loader)
- Scrapy - Shell
- Scrapy - 项目管道 (Item Pipeline)
- Scrapy - 数据导出 (Feed exports)
- Scrapy - 请求 & 响应
- Scrapy - 链接提取器
- Scrapy - 设置
- Scrapy - 异常
- Scrapy 实战项目
- Scrapy - 创建项目
- Scrapy - 定义项目
- Scrapy - 第一个爬虫
- Scrapy - 爬取
- Scrapy - 提取项目
- Scrapy - 使用项目
- Scrapy - 跟踪链接
- Scrapy - 抓取数据
- Scrapy 有用资源
- Scrapy - 快速指南
- Scrapy - 有用资源
- Scrapy - 讨论
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设置,请访问此链接。