Scrapy教程

Scrapy 设置

说明

可以使用 Scrapy 设置修改 Scrapy 组件的行为。设置还可以选择当前处于活动状态的 Scrapy 项目,以防您有多个 Scrapy 项目。

指定设置

当您抓取网站时,您必须通知 Scrapy 您正在使用的设置。为此,应使用环境变量 SCRAPY_SETTINGS_MODULE,其值应采用 Python 路径语法。

填充设置

下表显示了您可以填充设置的一些机制-
描述
命令行选项
这里,传递的参数通过覆盖其他选项而具有最高优先级。-s 用于覆盖一项或多项设置。
scrapy crawl myspider-s LOG_FILE = scrapy.log
每个爬虫的设置
爬虫可以有自己的设置,通过使用属性custom_settings覆盖项目的设置。
class DemoSpider(scrapy.Spider): name = 'demo' custom_settings = { 'SOME_SETTING': 'some value', }
项目设置模块
在这里,您可以填充自定义设置,例如添加或修改 settings.py 文件中的设置。
每个命令的默认设置
每个 Scrapy 工具命令在 default_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 的内置设置-
设置和说明
AWS_ACCESS_KEY_ID
用于访问亚马逊网络服务。
默认值:无
AWS_SECRET_ACCESS_KEY
用于访问亚马逊网络服务。
默认值:无
BOT_NAME
可以用来构建User-Agent的bot名称。
默认值:'scrapybot'
CONCURRENT_ITEMS
用于并行处理的项目处理器中现有项目的最大数量。
默认值:100
CONCURRENT_REQUESTS
Scrapy 下载器执行的最大现有请求数。
默认值:16
CONCURRENT_REQUESTS_PER_DOMAIN
对任何单个域同时执行的最大现有请求数。
默认值:8
CONCURRENT_REQUESTS_PER_IP
同时对任何单个 IP 执行的最大现有请求数。
默认值:0
DEFAULT_ITEM_CLASS
用于表示字段的类。
默认值:'scrapy.item.Item'
DEFAULT_REQUEST_HEADERS
Scrapy 的 HTTP 请求使用的默认标头。
默认值-
{  
   'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,
  */*;q=0.8', 'Accept-Language': 'en',  
} 
td>
DEPTH_LIMIT
爬虫抓取任何站点的最大深度。
默认值:0
DEPTH_PRIORITY
一个整数,用于根据深度改变请求的优先级。
默认值:0
DEPTH_STATS
表示是否收集深度统计数据。
默认值:True
DEPTH_STATS_VERBOSE
启用此设置后,会在每个详细深度的统计信息中收集请求数。
默认值:False
DNSCACHE_ENABLED
用于在内存缓存中启用DNS。
默认值:True
DNSCACHE_SIZE
它定义了DNS在内存缓存中的大小。
默认值:10000
DNS_TIMEOUT
用于设置DNS处理查询的超时时间。
默认值:60
DOWNLOADER
它是用于抓取过程的下载器。
默认值:'scrapy.core.downloader.Downloader'
DOWNLOADER_MIDDLEWARES
它是一个包含下载器中间件及其命令的字典。
默认值:{}
DOWNLOADER_MIDDLEWARES_BASE
这是一个保存下载器中间件的字典,默认启用。
默认值-
{ 'scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware': 100, }
DOWNLOADER_STATS
此设置用于启用下载器统计信息。
默认值:True
DOWNLOAD_DELAY
它定义了下载器从站点下载页面之前的总时间。
默认值:0
DOWNLOAD_HANDLERS
这是一个带有下载处理程序的字典。
默认值:{}
DOWNLOAD_HANDLERS_BASE
这是一个默认启用下载处理程序的字典。
默认值-
{ 'file': 'scrapy.core.downloader.handlers.file.FileDownloadHandler', }
DOWNLOAD_TIMEOUT
下载器超时前等待的总时间。
默认值:180
DOWNLOAD_MAXSIZE
下载器下载的最大响应大小。
默认值:1073741824 (1024MB)
DOWNLOAD_WARNSIZE
它定义了下载器要警告的响应大小。
默认值:33554432 (32MB)
DUPEFILTER_CLASS
用于检测和过滤重复请求的类。
默认值:'scrapy.dupefilters .RFPDupeFilter'
DUPEFILTER_DEBUG
此设置在设置为 true 时记录所有重复的过滤器。
默认值:False
EDITOR
用于使用edit命令编辑爬虫。
默认值:取决于环境
EXTENSIONS
这是一个在项目中启用了扩展的字典。
默认值:{}
EXTENSIONS_BASE
这是一个内置扩展的字典。
默认值:{ 'scrapy.extensions.corestats.CoreStats ': 0, }
FEED_TEMPDIR
该目录用于设置自定义文件夹,用于存放爬虫临时文件。
ITEM_PIPELINES
这是一个有管道的字典。
默认值:{}
LOG_ENABLED
定义是否启用日志记录。
默认值:True
LOG_ENCODING
它定义了用于日志记录的编码类型。
默认值:'utf-8'
LOG_FILE
用于输出日志的文件名。
默认值:无
LOG_FORMAT
这是一个可以格式化日志消息的字符串。
默认值:'%(asctime)s [%(name)s] %(levelname)s: %(message)s'
LOG_DATEFORMAT
这是一个可以格式化日期/时间的字符串。
默认值:'%Y-%m-%d %H:%M:%S'
LOG_LEVEL
它定义了最小日志级别。
默认值:'DEBUG'
LOG_STDOUT
此设置如果设置为true,您的所有进程输出都将出现在日志中。
默认值:False
MEMDEBUG_ENABLED
定义是否开启内存调试。
默认值:False
MEMDEBUG_NOTIFY
它定义了在启用内存调试时发送到特定地址的内存报告。
默认值:[ ]
MEMUSAGE_ENABLED
它定义了当 Scrapy 进程超过内存限制时是否启用内存使用。
默认值:错误
MEMUSAGE_LIMIT_MB
它定义了允许的内存的最大限制(以兆字节为单位)。
默认值:0
MEMUSAGE_CHECK_INTERVAL_SECONDS
用于通过设置间隔的长度来检查当前的内存使用情况。
默认值:60.0
MEMUSAGE_NOTIFY_MAIL
用于在内存达到限制时用邮件列表通知。
默认值:False
MEMUSAGE_REPORT
定义是否在关闭每个爬虫时发送内存使用报告。
默认值:False
p>
MEMUSAGE_WARNING_MB
它定义了在发送警告之前允许的总内存。
默认值:0
NEWSPIDER_MODULE
这是一个使用 genspider 命令创建新爬虫的模块。
默认值:''
RANDOMIZE_DOWNLOAD_DELAY
它定义了从站点下载请求时 Scrapy 等待的随机时间。
默认值: 真的
REACTOR_THREADPOOL_MAXSIZE
它定义了反应器线程池的最大大小。
默认值:10
REDIRECT_MAX_TIMES
它定义了一个请求可以被重定向的次数。
默认值:20
REDIRECT_PRIORITY_ADJUST
此设置设置后,调整请求的重定向优先级。
默认值:+2
RETRY_PRIORITY_ADJUST
此设置设置后,调整请求的重试优先级。
默认值:-1
ROBOTSTXT_OBEY
当设置为 true 时,Scrapy 遵守 robots.txt 政策。
默认值:False
SCHEDULER
它定义了用于抓取目的的调度器。
默认值:'scrapy.core.scheduler.Scheduler '
SPIDER_CONTRACTS
是项目中的字典,有爬虫合约,用来测试爬虫。
默认值:{}
SPIDER_CONTRACTS_BASE
这是一个保存 Scrapy 合约的字典,默认在 Scrapy 中启用。
默认值-
{ 
   'scrapy.contracts.default.UrlContract' : 1, 
   'scrapy.contracts.default.ReturnsContract': 2, 
} 
SPIDER_LOADER_CLASS
它定义了一个实现 SpiderLoader API来加载爬虫的类。
默认值: 'scrapy.spiderloader.SpiderLoader'
SPIDER_MIDDLEWARES
这是一个包含爬虫中间件的字典。
默认值:{}
SPIDER_MIDDLEWARES_BASE
这是一个包含爬虫中间件的字典,默认在 Scrapy 中启用。
默认值-
{ 
   'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware': 50, 
}
SPIDER_MODULES
这是一个包含 Scrapy 将寻找的爬虫的模块列表。
默认值:[]
STATS_CLASS
该类实现了 Stats Collector API 来收集统计数据。
默认值: 'scrapy.statscollectors.MemoryStatsCollector'
STATS_DUMP
此设置设置为 true 时,会将统计信息转储到日志中。
默认值:True
STATSMAILER_RCPTS
爬虫完成抓取后,Scrapy 使用此设置发送统计信息。
默认值:[]
TELNETCONSOLE_ENABLED
定义是否启用telnetconsole。
默认值:True
TELNETCONSOLE_PORT
它定义了telnet 控制台的端口。
默认值:[6023, 6073]
TEMPLATES_DIR
这是一个包含模板的目录,可以在创建新项目时使用。
默认值:scrapy中的模板目录模块
URLLENGTH_LIMIT
它定义了被抓取的 URL 允许的 URL 长度的最大限制。
默认值:2083
USER_AGENT
它定义了在抓取站点时要使用的用户代理。
默认值:"Scrapy/VERSION (+ http://scrapy.org)"
对于其他 Scrapy 设置,请转到此链接。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4