Scrapy结构学习——settings配置

Scrapy结构学习——settings配置

简介:

Settings允许自定义所有Scrapy组件的行为,包括核心,扩展,管道和爬虫本身。

设置的基础结构提供了键值映射的全局命名空间,代码可以使用它从中提取配置值。可以通过不同的机制来填充设置。

settings中的选项

settings参数有四个级别,优先级如下:

  1. 命令行选项(Command line Options)(最高优先级)

  2. 每个爬虫的设置

  3. 项目设定模块(Project settings module)

  4. 命令默认设定模块(Default settings per-command)

  5. 全局默认设定(Default global settings) (最低优先级)

命令行选项:

就是我们平时使用命令行scrapy crawl somespider时,可在命令行后面添加的自定义参数。

scrapy crawl myspider -s LOG_FILE=scrapy.log

每个爬虫的设置

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

from ..custom_settings import *
​
class Spider1(CrawlSpider):
    name = "spider1"
    custom_settings = custom_settings_for_spider1
    pass
​
class Spider2(CrawlSpider):
    name = "spider2"
    custom_settings = custom_settings_for_spider2
 
custom_settings.py
​
custom_settings_for_spider1 = {
    'LOG_FILE': 'spider1.log',
    'CONCURRENT_REQUESTS': 100,
    'DOWNLOADER_MIDDLEWARES': {
        'spider.middleware_for_spider1.Middleware': 667,
    },
    'ITEM_PIPELINES': {
        'spider.mysql_pipeline_for_spider1.Pipeline': 400,
    },
}
​
custom_settings_for_spider2 = {
    'LOG_FILE': 'spider2.log',
    'CONCURRENT_REQUESTS': 40,
    'DOWNLOADER_MIDDLEWARES': {
        'spider.middleware_for_spider2.Middleware': 667,
    },
    'ITEM_PIPELINES': {
        'spider.mysql_pipeline_for_spider2.Pipeline': 400,
    },
}

 

项目设定模块

项目设置模块是Scrapy项目的标准配置文件,它将填充大多数自定义设置。对于标准的Scrapy项目,这意味着您将添加或更改settings.py为您的项目创建的文件中的设置。 通常我们在一个项目目录下会有很多个spider,但是只有一个settings.py全局配置文件,在这个settings.py我们可以设置项目下所有爬虫的一些公共变量

每命令的默认设置

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

默认全局设置

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

 

项目设定模块解析

  • 模块相关说明信息

# -*- coding: utf-8 -*-
​
# Scrapy settings for new_center project
#
# For simplicity, this file contains only settings considered important or
# commonly used. You can find more settings consulting the documentation:
#
#     http://doc.scrapy.org/en/latest/topics/settings.html
#     http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html
#     http://scrapy.readthedocs.org/en/latest/topics/spider-middleware.html
  • 项目名字和爬虫模块说明,引擎根据这个信息找到爬虫

BOT_NAME = 'new_center'  # 项目名字
​
SPIDER_MODULES = ['new_center.spiders']
NEWSPIDER_MODULE = 'new_center.spiders'
  • 浏览器的USER_AGENT,可以自定义伪装。

# Crawl responsibly by identifying yourself (and your website) on the user-agent
#USER_AGENT = 'new_center (+http://www.yourdomain.com)'
  • 是否遵守robots协议,默认是遵守的,可以改成False或将其注释

# Obey robots.txt rules
ROBOTSTXT_OBEY = True
  • 设置scrapy爬虫最大的并发请求数量,默认是16

# Configure maximum concurrent requests performed by Scrapy (default: 16)
#CONCURRENT_REQUESTS = 32
  • 设置对访问同一个网站进行请求的延时时间,默认情况下,Scrapy在两个请求间不等待一个固定的值,而是使用0.5到1.5之间的一个随机值。

# Configure a delay for requests for the same website (default: 0)
# See http://scrapy.readthedocs.org/en/latest/topics/settings.html#download-delay
# See also autothrottle settings and docs
#DOWNLOAD_DELAY = 3
# The download delay setting will honor only one of:
  • 设置对每个网站和每个IP的最大并发请求数量,两个最好只设置一个,如果都设置,则按照限制IP生效。

#CONCURRENT_REQUESTS_PER_DOMAIN = 16
#CONCURRENT_REQUESTS_PER_IP = 16
  • 设置是否禁用cookie,目前默认是可用的,去掉注释则禁用

# Disable cookies (enabled by default)
#COOKIES_ENABLED = False
  • 设置是否可远程登录控制台,目前默认是可以的,去掉注释则禁用

# Disable Telnet Console (enabled by default)
#TELNETCONSOLE_ENABLED = False
  • 用来设置请求头,一般不用,因为请求头可以动态设置

# Override the default request headers:
#DEFAULT_REQUEST_HEADERS = {
#   'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
#   'Accept-Language': 'en',
#}
  • 是否开启使用爬虫spider的中间件,默认不启用,解除注释后启用,后面的数字代表优先级,数字越小,优先级越高

# Enable or disable spider middlewares
# See http://scrapy.readthedocs.org/en/latest/topics/spider-middleware.html
#SPIDER_MIDDLEWARES = {
#    'new_center.middlewares.NewCenterSpiderMiddleware': 543,
#}
  • 是否开启爬虫下载器的中间件,默认不启用,解除注释后启用

# Enable or disable downloader middlewares
# See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html
#DOWNLOADER_MIDDLEWARES = {
#    'new_center.middlewares.MyCustomDownloaderMiddleware': 543,
#}
  • 是否禁用爬虫扩展,默认禁用,解除注释后将None改成数字,如500,扩展的优先级一般不重要,因为他们并不相互依赖,多个扩展的value值可以写相同。

# Enable or disable extensions
# See http://scrapy.readthedocs.org/en/latest/topics/extensions.html
#EXTENSIONS = {
#    'scrapy.extensions.telnet.TelnetConsole': None,
#}
  • 是否开启管道,默认关闭,开启則解除注释。是一个字典,默认为空,值任意,不过一般设置在0-1000之间,值越小优先级越高。

# Configure item pipelines
# See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html
#ITEM_PIPELINES = {
#    'new_center.pipelines.NewCenterPipeline': 300,
#}
  • 设置自动限速,根据Scrapy服务器及爬取的网站的负载自动限制爬取速度,默认关闭,开启需解除注释。

# Enable and configure the AutoThrottle extension (disabled by default)
# See http://doc.scrapy.org/en/latest/topics/autothrottle.html
#AUTOTHROTTLE_ENABLED = True  # 自动限速的开关
# The initial download delay  
#AUTOTHROTTLE_START_DELAY = 5  # 初始下载延时
# The maximum download delay to be set in case of high latencies
#AUTOTHROTTLE_MAX_DELAY = 60  # 最大下载延时
# The average number of requests Scrapy should be sending in parallel to
# each remote server
#AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0
# Enable showing throttling stats for every response received:
#AUTOTHROTTLE_DEBUG = False
  • 启用和配置HTTP缓存

# Enable and configure HTTP caching (disabled by default)
# See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings
#HTTPCACHE_ENABLED = True
#HTTPCACHE_EXPIRATION_SECS = 0
#HTTPCACHE_DIR = 'httpcache'
#HTTPCACHE_IGNORE_HTTP_CODES = []
#HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'
  • 另外的重要的设置:

  1. DEPTH_LIMIT:爬取网站最大的允许深度,默认值为0,表示没有限制;如果为1,表示只允许解析一层的url。

  2. DOWNLOAD_TIMEOUT:下载器超时时间,默认180s.

  3. LOG_ENABLED:是否启用logging,即日志文件,默认为True。

  4. LOG_ENCODING:设置日志文件的编码,默认使用UTF_8。

  5. LOG_LEVEL:对日志的内容进行等级的设置,有五个级别可以选择:

CRITICAL: 严重错误;
ERROR:一般错误;
WARNING:警告信息;
INFO:一般信息;
DEBUG:调试信息
  1. PROXIES:设置代理;这不是scrapy内置的参数,但可以定义在setting模块,使用的时候可以导入。

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值