描述
可以使用Scrapy设置修改Scrapy组件的行为.如果您有多个Scrapy项目,设置还可以选择当前处于活动状态的Scrapy项目.
指定设置
您必须通知Scrapy您在废弃网站时使用的设置.为此,应使用环境变量 SCRAPY_SETTINGS_MODULE ,其值应采用Python路径语法.
填充设置
下表显示了一些可以填充设置的机制;
Sr.No | 机制&说明 |
---|---|
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工具命令在defau中定义自己的设置lt_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 来访问设置.
以下示例演示了这一点./p>
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 它用于访问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 这是用于HTTP的默认标头Scrapy的请求. 默认值 : {'接受':'文本/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','接受语言':'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 | 下载程序 这是一个用于抓取过程的下载程序. 默认值:'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 这是一个用于检测和过滤重复请求的类./p> 默认值:'scrapy.dupefilters.RFPDupeFilter' |
28 | DUPEFILTER_DEBUG 此设置记录所有重复的过滤器设置为true. 默认值:False |
29 | 编辑 它用于编辑蜘蛛使用编辑命令. 默认值:取决于环境 |
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 这是用于记录输出的文件的名称. D.有效值:无 |
37 | LOG_FORMAT 这是一个字符串,用于格式化日志消息. 默认值:'%(asctime)s [%(名称)s]%(级别名称)s:%(消息)s' |
38 | LOG_DATEFORMAT 这是一个字符串,用于格式化日期/时间. 默认值:'%Y-%m-%d%H:%M:%S' |
39 | LOG_LEVEL 它定义了最小日志级别. 默认值:'DEBUG' |
40 | LOG_STDOUT 此设置如果设置为true,则所有过程输出都将显示在日志中. 默认值:False |
41 | MEMDEBUG_ENABLED 它定义了我f要启用内存调试. 默认值:False |
42 | MEMDEBUG_NOTIFY 它定义了启用内存调试时发送到特定地址的内存报告. 默认值:[] |
43 | MEMUSAGE_ENABLED 它定义了当Scrapy进程超出内存限制时是否启用内存使用情况. 默认值:False |
44 | MEMUSAGE_LIMIT_MB 它定义了允许的内存最大限制(以兆字节为单位). 默认值:0 |
45 | MEMUSAGE_CHECK_INTERVAL_SECONDS 它用于通过设置间隔的长度来检查当前的内存使用情况. Defaul t值: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中启用. 默认值 : 去; {'sprapy.contracts.default.UrlContract':1,'scherapy.contracts.defau lt.ReturnsContract':2,} |
59 | SPIDER_LOADER_CLASS 它定义了一个实现 默认值:'scrapy.spiderloader.SpiderLoader' |
60 | SPIDER_MIDDLEWARES 这是一本包含蜘蛛中间件的字典. 默认值:{} |
61 | SPIDER_MIDDLEWARES_BASE 这是一个包含蜘蛛中间件的字典,默认情况下在Scrapy中启用. 默认值 : {'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware':50,} |
62 | SPIDER_MODULES 这是一个列表o包含Scrapy将寻找的蜘蛛的f模块. 默认值:[] |
63 | STATS_CLASS It是一个实现 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 这是一个包含模板的目录在创建新项目时使用. 默认值:scrapy模块内的模板目录 |
69 | URLLENGTH_LIMIT 它定义了抓取网址允许的网址长度的最大限制. 默认值:2083 |
70 | USER_AGENT 它定义了在抓取网站时使用的用户代理. 默认值:"Scrapy/VERSION(+ http://scrapy.org)" |
对于其他Scrapy设置,请转到此链接.