scrapy 中 settings.py 中字段的意思

Posted luym

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scrapy 中 settings.py 中字段的意思相关的知识,希望对你有一定的参考价值。

# -*- coding: utf-8 -*-

# Scrapy settings for fenbushi project
#
# For simplicity, this file contains only settings considered important or
# commonly used. You can find more settings consulting the documentation:
#
# https://doc.scrapy.org/en/latest/topics/settings.html
# https://doc.scrapy.org/en/latest/topics/downloader-middleware.html
# https://doc.scrapy.org/en/latest/topics/spider-middleware.html

‘‘‘原有配置‘‘‘
# 项目名
BOT_NAME = ‘fenbushi‘
# 搜索模块
SPIDER_MODULES = [‘fenbushi.spiders‘]
NEWSPIDER_MODULE = ‘fenbushi.spiders‘

# 头,默认: "Scrapy/VERSION (+http://scrapy.org)",爬取的默认User-Agent,除非被覆盖。
# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = ‘fenbushi (+http://www.yourdomain.com)‘

# Scrapy downloader 并发请求(concurrent requests)的最大值
# Configure maximum concurrent requests performed by Scrapy (default: 16)
#CONCURRENT_REQUESTS = 32

# Configure a delay for requests for the same website (default: 0)
# See https://doc.scrapy.org/en/latest/topics/settings.html#download-delay
# See also autothrottle settings and docs

# The download delay setting will honor only one of:

# 下载器在下载同一个网站下一个页面前需要等待的时间。该选项可以用来限制爬取速度, 减轻服务器压力。同时也支持小数:该设定影响(默认启用的) RANDOMIZE_DOWNLOAD_DELAY 设定。 默认情况下,Scrapy在两个请求间不等待一个固定的值,而是使用0.5到1.5之间的一个随机值 * DOWNLOAD_DELAY 的结果作为等待间隔。当 CONCURRENT_REQUESTS_PER_IP 非0时,延迟针对的是每个ip而不是网站。另外您可以通过spider的 download_delay 属性为每个spider设置该设定。
#延迟3秒
DOWNLOAD_DELAY = 3

#CONCURRENT_REQUESTS_PER_DOMAIN = 16
# 对单个网站进行并发请求的最大值
#CONCURRENT_REQUESTS_PER_IP = 16
# 对单个IP进行并发请求的最大值。如果非0,则忽略 CONCURRENT_REQUESTS_PER_DOMAIN 设定,使用该设定。 也就是说,并发限制将针对IP,而不是网站。该设定也影响 DOWNLOAD_DELAY: 如果 CONCURRENT_REQUESTS_PER_IP 非0,下载延迟应用在IP而不是网站上。

# Disable cookies (enabled by default)
# 在settings.py中设置COOKIES_ENABLES=False。也就是不启用cookies middleware,不想web server发送cookies。
#COOKIES_ENABLED = False

# Disable Telnet Console (enabled by default)
# ‘表明 telnet 终端 (及其插件)是否启用的布尔值。‘
#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‘,
}


# Enable or disable spider middlewares
# See https://doc.scrapy.org/en/latest/topics/spider-middleware.html
#SPIDER_MIDDLEWARES = {
# ‘fenbushi.middlewares.FenbushiSpiderMiddleware‘: 543,
#}
# 要启用spider中间件,您可以将其加入到 SPIDER_MIDDLEWARES 设置中。该设置是一个字典,键位中间件的路径,值为中间件的顺序(order)。如上就是开启


# 保存项目中启用的下载中间件及其顺序的字典。 激活下载器中间件DOWNLOADER_MIDDLEWARES设置会与Scrapy定义的 DOWNLOADER_MIDDLEWARES_BASE 设置合并(但不是覆盖), 而后根据顺序(order)进行排序,最后得到启用中间件的有序列表: 第一个中间件是最靠近引擎的,最后一个中间件是最靠近下载器的。关于如何分配中间件的顺序请查看 DOWNLOADER_MIDDLEWARES_BASE 设置,而后根据您想要放置中间件的位置选择一个值。由于每个中间件执行不同的动作,您的中间件可能会依赖于之前(或者之后)执行的中间件,因此顺序是很重要的,数值越小,优先级越高。
# Enable or disable downloader middlewares
# See https://doc.scrapy.org/en/latest/topics/downloader-middleware.html
DOWNLOADER_MIDDLEWARES = {
‘fenbushi.middlewares.FenbushiDownloaderMiddleware‘: 543,
# ‘fenbushi.middlewares.RotateUserAgentMiddleware‘: 400,
}

# Enable or disable extensions
# See https://doc.scrapy.org/en/latest/topics/extensions.html
#EXTENSIONS = {
# ‘scrapy.extensions.telnet.TelnetConsole‘: None,
#}


# Configure item pipelines
# See https://doc.scrapy.org/en/latest/topics/item-pipeline.html
# 这里如果一个项目多个spiders的时候,每次运行的时候每次要在这里制定一个对应的pipeline,保存项目中启用的pipeline及其顺序的字典。该字典默认为空,值(value)任意。 不过值(value)习惯设定在0-1000范围内。为了兼容性,ITEM_PIPELINES 支持列表,不过已经被废弃了。
ITEM_PIPELINES = {
‘fenbushi.pipelines.FenbushiPipeline‘: 300,
‘fenbushi.pipelines.RedisPiplines‘: 301,

}

# Enable and configure the AutoThrottle extension (disabled by default)
# See https://doc.scrapy.org/en/latest/topics/autothrottle.html

# 启用自动限速AutoThrottle扩展
#AUTOTHROTTLE_ENABLED = True

# The initial download delay
# 初始下载延迟5秒(单位:秒)
#AUTOTHROTTLE_START_DELAY = 5

# The maximum download delay to be set in case of high latencies
# 初始下载最大延迟60秒(单位:秒)
#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)模式,展示每个接收到的response。 您可以通过此来查看限速参数是如何实时被调整的
#AUTOTHROTTLE_DEBUG = False

# Enable and configure HTTP caching (disabled by default)
# See https://doc.scrapy.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings

# HTTP缓存是否开启。
#HTTPCACHE_ENABLED = True

# 缓存的request的超时时间,单位秒。超过这个时间的缓存request将会被重新下载。如果为0,则缓存的request将永远不会超时。
#HTTPCACHE_EXPIRATION_SECS = 0

# 存储(底层的)HTTP缓存的目录。如果为空,则HTTP缓存将会被关闭。 如果为相对目录,则相对于项目数据目录(project data dir)。更多内容请参考 默认的Scrapy项目结构 。
#HTTPCACHE_DIR = ‘httpcache‘

# 不缓存设置中的HTTP返回值(code)的request。
#HTTPCACHE_IGNORE_HTTP_CODES = []

# 实现缓存存储后端的类。
#HTTPCACHE_STORAGE = ‘scrapy.extensions.httpcache.FilesystemCacheStorage‘



‘‘‘redis组件配置‘‘‘
# scrapy_redis 调度器组件
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
# 可中途暂停不清空信息
SCHEDULER_PERSIST = True
# scrapy_redis 去重组件
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter1"

# 默认scrapy队列模式,优先级
SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderPriorityQueue"
# 队列模式,先进先出
# SCHEDULER_QUEUE_CLASS = "scrapy_redis_queue.SpiderQueue"
# 队列模式,先进后出
# SCHEDULER_QUEUE_CLASS = "scrapy_redis_queue.SpiderStack"

# Redis_url
REDIS_URL = None
# Redis主机
REDIS_HOST = "10.35.30.5"
# 端口号
REDIS_PORT = 6379
# Redis字符串格式
REDIS_ENCODING = "utf-8"

# Obey robots.txt rules
# robot协议,告诉搜索引擎本网站哪些目录不希望被爬取(确定爬取范围),改成False,表示拒绝遵守这个协议,可以爬取全部信息
ROBOTSTXT_OBEY = False
# 开启调试模式是什么 (debug模式)
LOG_LEVER = "DEBUG"


以下内容为默认setting.py文件没有的字段,但是可以自己添加
CONCURRENT_ITEMS
‘‘’默认: 100,Item Processor(即 Item Pipeline) 同时处理(每个response的)item的最大值。‘‘‘
 
 
DEFAULT_ITEM_CLASS
‘‘‘默认: ‘scrapy.item.Item‘the Scrapy shell 中实例化item使用的默认类‘‘‘
 
 
DEPTH_LIMIT
‘‘‘默认: 0爬取网站最大允许的深度(depth)值。如果为0,则没有限制‘‘‘
 
 
DEPTH_PRIORITY
‘‘‘默认: 0,整数值。用于根据深度调整request优先级。如果为0,则不根据深度进行优先级调整‘‘‘
 
 
DEPTH_STATS
‘‘‘默认: True,是否收集最大深度数据。‘‘‘
 
 
DEPTH_STATS_VERBOSE
‘‘‘默认: False,是否收集详细的深度数据。如果启用,每个深度的请求数将会被收集在数据中。‘‘‘


DOWNLOAD_HANDLERS
‘‘‘默认: {}.保存项目中启用的下载处理器(request downloader handler)的字典。 例子请查看 DOWNLOAD_HANDLERS_BASE 。
 
 
DOWNLOAD_HANDLERS_BASE
‘‘‘
默认:
{
  ‘file‘: ‘scrapy.core.downloader.handlers.file.FileDownloadHandler‘,

  ‘http‘: ‘scrapy.core.downloader.handlers.http.HttpDownloadHandler‘,

  ‘https‘: ‘scrapy.core.downloader.handlers.http.HttpDownloadHandler‘,

  ‘s3‘: ‘scrapy.core.downloader.handlers.s3.S3DownloadHandler‘,
}
保存项目中默认启用的下载处理器(request downloader handler)的字典。 永远不要在项目中修改该设定,而是修改 DOWNLOADER_HANDLERS 。如果需要关闭上面的下载处理器,您必须在项目中的 DOWNLOAD_HANDLERS 设定中设置该处理器,并为其赋值为 None 。
例如,关闭文件下载处理器:
DOWNLOAD_HANDLERS = {
  ‘file‘: None,
}
‘‘‘
 
 
DOWNLOAD_TIMEOUT
‘‘‘默认: 180,下载器超时时间(单位: 秒)。‘‘‘
 
 
LOG_ENABLED
‘‘‘默认: True,是否启用logging。‘‘‘
 
 
LOG_ENCODING
‘‘‘默认: ‘utf-8,logging使用的编码。‘‘‘
 

LOG_FILE
‘‘‘默认: None,logging输出的文件名。如果为None,则使用标准错误输出(standard error)。‘‘‘
 
 
LOG_LEVEL
‘‘‘默认: ‘DEBUG‘,log的最低级别。可选的级别有: CRITICAL、 ERROR、WARNING、INFO、DEBUG。更多内容请查看 Logging 。‘‘‘
 
 
LOG_STDOUT
‘‘‘默认: False,如果为 True ,进程所有的标准输出(及错误)将会被重定向到log中。例如, 执行 print ‘hello‘ ,其将会在Scrapy log中显示。‘‘‘
 
 
RANDOMIZE_DOWNLOAD_DELAY
‘‘‘默认: True,如果启用,当从相同的网站获取数据时,Scrapy将会等待一个随机的值 (0.5到1.5之间的一个随机值 * DOWNLOAD_DELAY)。该随机值降低了crawler被检测到(接着被block)的机会。某些网站会分析请求, 查找请求之间时间的相似性。随机的策略与 wget --random-wait 选项的策略相同。若 DOWNLOAD_DELAY 为0(默认值),该选项将不起作用‘‘‘
































































































































































以上是关于scrapy 中 settings.py 中字段的意思的主要内容,如果未能解决你的问题,请参考以下文章

Python爬虫教程-32-Scrapy 爬虫框架项目 Settings.py 介绍

Scrapy-拓展类和settings.py配置文件

Scrapy配置自定义scrapy命令

Python爬虫之Scrapy框架系列——settings.py配置文件的学习

Python爬虫之Scrapy框架系列——settings.py配置文件的学习

scrapy:日志和post请求