Scrapy – 设置
Scrapy – 设置
描述
可以使用 Scrapy 设置修改 Scrapy 组件的行为。这些设置还可以选择当前处于活动状态的 Scrapy 项目,以防您有多个 Scrapy 项目。
指定设置
当您抓取网站时,您必须通知 Scrapy 您正在使用哪个设置。为此,应使用环境变量SCRAPY_SETTINGS_MODULE,其值应采用 Python 路径语法。
填充设置
下表显示了您可以填充设置的一些机制 –
Sr.No | 机理和描述 |
---|---|
1 |
Command line options 在这里,通过覆盖其他选项,传递的参数具有最高优先级。-s 用于覆盖一项或多项设置。 scrapy crawl myspider -s LOG_FILE = scrapy.log |
2 |
Settings per-spider 蜘蛛可以有自己的设置,通过使用属性 custom_settings 覆盖项目的设置。 class DemoSpider(scrapy.Spider): name = 'demo' custom_settings = { 'SOME_SETTING': 'some value', } |
3 |
Project settings module 在这里,您可以填充自定义设置,例如添加或修改 settings.py 文件中的设置。 |
4 |
Default settings per-command 每个 Scrapy 工具命令在 default_settings 属性中定义自己的设置,以覆盖全局默认设置。 |
5 |
Default global settings 这些设置可以在 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 的内置设置 –
Sr.No | 设置和说明 |
---|---|
1 |
AWS_ACCESS_KEY_ID 它用于访问亚马逊网络服务。 默认值:无 |
2 |
AWS_SECRET_ACCESS_KEY 它用于访问亚马逊网络服务。 默认值:无 |
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 |
DEPTH_LIMIT 蜘蛛抓取任何站点的最大深度。 默认值:0 |
11 |
DEPTH_PRIORITY 它是一个整数,用于根据深度更改请求的优先级。 默认值:0 |
12 |
DEPTH_STATS 它说明是否收集深度统计信息。 默认值:真 |
13 |
DEPTH_STATS_VERBOSE 启用此设置后,将在每个详细深度的统计信息中收集请求数。 默认值:假 |
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 它是一个带有下载处理程序的字典,默认情况下是启用的。 默认值 – { '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 时,此设置会记录所有重复的过滤器。 默认值:假 |
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 它定义了最低日志级别。 默认值:’调试’ |
40 |
LOG_STDOUT 此设置如果设置为 true,您的所有进程输出都将出现在日志中。 默认值:假 |
41 |
MEMDEBUG_ENABLED 它定义是否启用内存调试。 默认值:假 |
42 |
MEMDEBUG_NOTIFY 它定义了在启用内存调试时发送到特定地址的内存报告。 默认值: [] |
43 |
MEMUSAGE_ENABLED 它定义了当 Scrapy 进程超过内存限制时是否启用内存使用。 默认值:假 |
44 |
MEMUSAGE_LIMIT_MB 它定义了允许的最大内存限制(以兆字节为单位)。 默认值:0 |
45 |
MEMUSAGE_CHECK_INTERVAL_SECONDS 它用于通过设置间隔的长度来检查当前的内存使用情况。 默认值:60.0 |
46 |
MEMUSAGE_NOTIFY_MAIL 它用于在内存达到限制时通过电子邮件列表进行通知。 默认值:假 |
47 |
MEMUSAGE_REPORT 它定义是否在关闭每个蜘蛛时发送内存使用报告。 默认值:假 |
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 政策。 默认值:假 |
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 时,会将统计信息转储到日志中。 默认值:真 |
65 |
STATSMAILER_RCPTS 一旦蜘蛛完成抓取,Scrapy 使用此设置发送统计信息。 默认值: [] |
66 |
TELNETCONSOLE_ENABLED 定义是否开启telnetconsole。 默认值:真 |
67 |
TELNETCONSOLE_PORT 它为 telnet 控制台定义了一个端口。 默认值:[6023, 6073] |
68 |
TEMPLATES_DIR 它是一个包含可在创建新项目时使用的模板的目录。 默认值:scrapy 模块内的模板目录 |
69 |
URLLENGTH_LIMIT 它定义了被爬取的 URL 允许的 URL 长度的最大限制。 默认值:2083 |
70 |
USER_AGENT 它定义了在抓取站点时要使用的用户代理。 默认值:“Scrapy/VERSION (+http://scrapy.org)” |
对于其他 Scrapy 设置,请转到此链接。