Scrapy进阶知识点总结(五)——Settings

 

1.设置优先级

Scrapy中有不同层次的设置,其类型以及优先级如下(从高到低):

  • 1.命令行命令中指定的设置
  • 2.每个spider中的设置
  • 3.scrapy项目中settings.py设置
  • 4.命令行命令的默认设置
  • 5.scrapy全局的默认设置

1.命令行命令中指定的设置

命令行提供的参数是最优先的参数,覆盖任何其他选项

scrapy crawl myspider -s LOG_FILE=scrapy.log

2.每个spider中的设置

spider可以定义自己的设置,这些设置优先并覆盖项目设置。他们可以通过设置custom_settings属性来实现

class MySpider(scrapy.Spider):
    name = 'myspider'

    custom_settings = {
        'SOME_SETTING': 'some value',
    }

3.scrapy项目中settings.py设置

通过project.settings中修改,下面有详细的配置解释

4.命令行命令的默认设置

每个Scrapy工具命令都可以有自己的默认设置,这些设置会覆盖全局默认设置。这些自定义命令设置default_settings在命令类的属性中指定。

5.scrapy全局的默认设置

全局默认值位于scrapy.settings.default_settings 模块中

 

2.settings设置

BOT_NAME

此Scrapy项目名称。这将默认用于构建User-Agent,也用于日志记录。使用该startproject命令创建项目时,它会自动填充项目名称

SPIDER_MODULES

scrapy查找spider的路径

NEWSPIDER_MODULE

指定使用genspider时创建spider的路径

USER_AGENT

爬虫时使用的默认User-Agent,除非被覆盖。默认: "Scrapy/VERSION (+https://scrapy.org)"

ROBOTSTXT_OBEY
表示遵不遵守君子协议,默认False
CONCURRENT_REQUESTS
Scrapy下载程序将执行的最大并发(即同时)请求数。默认16
DOWNLOAD_DELAY
下载延时,限制爬虫速度,防止过快被封
CONCURRENT_REQUESTS_PER_DOMAIN
将对任何单个域执行的最大并发(即同时)请求数
CONCURRENT_REQUESTS_PER_IP
对任何单个IP执行的最大并发(即同时)请求数。如果设置这个会忽略CONCURRENT_REQUESTS_PER_DOMAIN设置
COOKIES_ENABLED
是否启用cookies,如果启用,同时也会启用cookies中间件,默认是开。如果要用setting中请求头中cookie设置,则需要关闭这个,因为scrapy默认使用cookies中间件管理,可能会有冲突。
TELNETCONSOLE_ENABLED
是否启用Telnet
DEFAULT_REQUEST_HEADERS
配置请求头,项目全局配置,会被局部如spider headers请求中间件等覆盖,详细看 这里解释的比较好
即优先级为:中间件方式downloadermiddleware  > scrapy.Request(headers)  > spider中custom_settings   > settings.py > Scrapy默认
SPIDER_MIDDLEWARES
启用的spider中间件,数字越高优先级越高
DOWNLOADER_MIDDLEWARES
下载器中间件
EXTENSIONS
拓展,参考官网拓展章节
ITEM_PIPELINES
启用的item管道
AUTOTHROTTLE_ENABLED
启用AutoThrottle扩展,自动限速功能,有时爬的数据不全,可以试试这个。。
AUTOTHROTTLE_START_DELAY
AutoThrottle扩展初始下载延迟(以秒为单位)
AUTOTHROTTLE_MAX_DELAY
AutoThrottle扩展,在高延迟的情况下要设置的最大下载延迟(以秒为单位)
AUTOTHROTTLE_TARGET_CONCURRENCY
AutoThrottle扩展,对每个网站的并发量
AUTOTHROTTLE_DEBUG
启用AutoThrottle调试模式,该模式将显示收到的每个响应的统计信息,以便您可以查看如何实时调整限制参数
HTTPCACHE_ENABLED
是否启用HTTP缓存
HTTPCACHE_EXPIRATION_SECS
缓存请求的到期时间,以秒为单位
HTTPCACHE_DIR
用于存储(低级)HTTP缓存的目录。 如果为空,则将禁用HTTP缓存。 如果给出相对路径,则相对于项目数据dir
HTTPCACHE_IGNORE_HTTP_CODES
不要使用这些HTTP代码缓存响应(不懂)
HTTPCACHE_STORAGE
实现缓存存储后端的类
 
以上是使用startproject时settings.py中默认的设置,还有其它设置可以自行添加
 

3.访问setting

在spider中通过self.settings获取

class MySpider(scrapy.Spider):
    name = 'myspider'
    start_urls = ['http://example.com']

    def parse(self, response):
        print("Existing settings: %s" % self.settings.attributes.keys())

通过from_crawler类方法获取scrapy.crawler.Crawler.settings 中的属性

class MyExtension(object):
    def __init__(self, log_is_enabled=False):
        if log_is_enabled:
            print("log is enabled!")

    @classmethod
    def from_crawler(cls, crawler):
        settings = crawler.settings
        return cls(settings.getbool('LOG_ENABLED'))

可以在spider类、middleware类、pipeline类以及extension使用from_crawler方法

 

4.总结

1.settings.py中的设置是针对整个项目的,可以添加对整个spiders通用的设置

2.custom_settings是spider单独的设置,比如可以设置每个spider用不同的中间件或管道

3.命令行中的设置,最高的优先级,应用场景比如,cmd多开的时候使用不同配置去跑spider,不过一些配置可能会出问题

 

转载于:https://www.cnblogs.com/fengf233/p/11400262.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值