Scrapy中的Setting

佐手、 提交于 2019-11-28 15:44:20
AJAXCRAWL_ENABLED = False
# 自动限速设置
AUTOTHROTTLE_ENABLED = False
AUTOTHROTTLE_DEBUG = False
AUTOTHROTTLE_MAX_DELAY = 60.0
AUTOTHROTTLE_START_DELAY = 5.0
AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0

# 此Scrapy项目实施的bot的名称(也称为项目名称)。这将用于默认情况下构造User-Agent,也用于日志记录。
BOT_NAME = 'scrapybot'

# 一个整数值,单位为秒。如果一个spider在指定的秒数后仍在运行,它将以 closespider_timeout 的原因被自动关闭。
# 如果值设置为0(或者没有设置),spiders不会因为超时而关闭。
CLOSESPIDER_TIMEOUT = 0
# 在抓取了指定数目的Item之后
CLOSESPIDER_PAGECOUNT = 0
# 在收到了指定数目的响应之后
CLOSESPIDER_ITEMCOUNT = 0
# 在发生了指定数目的错误之后就终止爬虫程序
CLOSESPIDER_ERRORCOUNT = 0

COMMANDS_MODULE = ''

COMPRESSION_ENABLED = True

# 在项处理器(也称为项目管道)中并行处理的并发项目的最大数量(每个响应)。
CONCURRENT_ITEMS = 100

# 将由Scrapy下载程序执行的并发(即同时)请求的最大数量。
CONCURRENT_REQUESTS = 16

# 将对任何单个域执行的并发(即同时)请求的最大数量。
# 对'域'的推测:即allowed_domains中的URLS
CONCURRENT_REQUESTS_PER_DOMAIN = 8

# 将对任何单个IP执行的并发(即同时)请求的最大数量。如果非零,CONCURRENT_REQUESTS_PER_DOMAIN则忽略该设置,
# 而改为使用此设置。换句话说,并发限制将应用于每个IP,而不是每个域。
# 此设置也会影响DOWNLOAD_DELAY和 AutoThrottle扩展:如果CONCURRENT_REQUESTS_PER_IP 非零,下载延迟是强制每IP,而不是每个域。
CONCURRENT_REQUESTS_PER_IP = 0

# 是否启用cookiesmiddleware。如果关闭,cookies将不会发送给web server。
COOKIES_ENABLED = True
# 如果启用,Scrapy将记录所有在request(cookie 请求头)发送的cookies及response接收到的cookies(set-cookie接收头)
COOKIES_DEBUG = False

# 将用于在Scrapy shell中实例化项的默认类。
DEFAULT_ITEM_CLASS = 'scrapy.item.Item'

# 用于Scrapy HTTP请求的默认标头。他们在 scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware 这里被调用
DEFAULT_REQUEST_HEADERS = {
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
    'Accept-Language': 'en',
}

# scrapy.spidermiddlewares.depth.DepthMiddleware
# 允许抓取任何网站的最大深度。如果为零,则不施加限制。
DEPTH_LIMIT = 0

# 是否收集详细的深度统计信息。如果启用此选项,则在统计信息中收集每个深度的请求数。
DEPTH_STATS_VERBOSE = False

# 用于根据深度调整请求优先级的整数:
# 如果为零(默认),则不从深度进行优先级调整
# 正值将降低优先级,即,较高深度请求将被稍后处理 ; 这通常用于做广度优先爬网(BFO)
# 负值将增加优先级,即,较高深度请求将被更快地处理(DFO)
DEPTH_PRIORITY = 0

# 是否启用DNS内存缓存。
DNSCACHE_ENABLED = True

# DNS内存缓存大小。
DNSCACHE_SIZE = 10000

# 以秒为单位处理DNS查询的超时。支持浮点。
DNS_TIMEOUT = 60

# 下载器在从同一网站下载连续页面之前应等待的时间(以秒为单位)。这可以用于限制爬行速度,以避免过于严重的访问服务器。支持小数
# 此设置也受RANDOMIZE_DOWNLOAD_DELAY 设置(默认情况下启用)的影响。默认情况下,Scrapy不会在请求之间等待固定的时间量,
# 而是使用0.5 * DOWNLOAD_DELAY和1.5 * 之间的随机间隔DOWNLOAD_DELAY。
# 当CONCURRENT_REQUESTS_PER_IP为非零时,每个IP地址而不是每个域强制执行延迟。
# 您还可以通过设置download_delay spider属性来更改每个爬虫的此设置。
DOWNLOAD_DELAY = 0

# 包含在您的项目中启用的请求下载器处理程序的dict。参见DOWNLOAD_HANDLERS_BASE示例格式。
DOWNLOAD_HANDLERS = {}

# 包含Scrapy中默认启用的请求下载处理程序的dict。 您永远不应该在项目中修改此设置,而是修改DOWNLOAD_HANDLERS。
# 您可以通过在DOWNLOAD_HANDLERS中为其URI方案指定None来禁用任何这些下载处理程序。
# 例如,要禁用内置的FTP处理程序(无需替换),请将其放在settings.py中:
# DOWNLOAD_HANDLERS = {
#     'ft
DOWNLOAD_HANDLERS_BASE = {
    'data': 'scrapy.core.downloader.handlers.datauri.DataURIDownloadHandler',
    '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',
    'ftp': 'scrapy.core.downloader.handlers.ftp.FTPDownloadHandler',
}

# 下载器在超时前等待的时间量(以秒为单位)
# 可以使用download_timeout spider属性为每个spider设置此超时,使用download_timeout Request.meta键为每个请求设置此超时。
DOWNLOAD_TIMEOUT = 180      # 3mins

# 下载器将下载的最大响应大小(以字节为单位)。
# 如果要禁用它设置为0。
# 可以使用download_maxsize Spider属性和每个请求使用download_maxsize Request.meta键为每个爬虫设置此大小。
DOWNLOAD_MAXSIZE = 1024*1024*1024   # 1024m

# 下载程序将开始警告的响应大小(以字节为单位)。
DOWNLOAD_WARNSIZE = 32*1024*1024    # 32m

DOWNLOAD_FAIL_ON_DATALOSS = True

# 用于抓取的下载器。
DOWNLOADER = 'scrapy.core.downloader.Downloader'

# 定义protocol.ClientFactory 用于HTTP / 1.0连接(for HTTP10DownloadHandler)的Twisted 类。
DOWNLOADER_HTTPCLIENTFACTORY = 'scrapy.core.downloader.webclient.ScrapyHTTPClientFactory'

# 这里,“ContextFactory”是用于SSL / TLS上下文的Twisted术语,定义要使用的TLS / SSL协议版本,是否执行证书验证,或者甚至启用客户端验证(以及各种其他事情)
DOWNLOADER_CLIENTCONTEXTFACTORY = 'scrapy.core.downloader.contextfactory.ScrapyClientContextFactory'

# 使用此设置可自定义默认HTTP / 1.1下载程序使用的TLS/SSL方法。
# 此设置必须是以下字符串值之一:
# 'TLS':映射到OpenSSL TLS_method()(aka SSLv23_method()),允许协议协商,从平台支持的最高开始; 默认,推荐
# 'TLSv1.0':此值强制HTTPS连接使用TLS版本1.0; 如果你想要Scrapy <1.1的行为,设置这个
# 'TLSv1.1':强制TLS版本1.1
# 'TLSv1.2':强制TLS版本1.2
# 'SSLv3':强制SSL版本3(不推荐)
DOWNLOADER_CLIENT_TLS_METHOD = 'TLS' # Use highest TLS/SSL protocol version supported by the platform,
                                     # also allowing negotiation

# 包含在您的项目中启用的下载器中间件及其顺序的字典。
DOWNLOADER_MIDDLEWARES = {}

# 包含Scrapy中默认启用的下载器中间件的字典。
# 值越低越靠近引擎,值越高越接近下载器。您不应该在项目中修改此设置,应该在DOWNLOADER_MIDDLEWARES修改 。
DOWNLOADER_MIDDLEWARES_BASE = {
    # Engine side
    'scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware': 100,
    'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware': 300,
    'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware': 350,
    'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware': 400,
    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': 500,
    'scrapy.downloadermiddlewares.retry.RetryMiddleware': 550,
    'scrapy.downloadermiddlewares.ajaxcrawl.AjaxCrawlMiddleware': 560,
    'scrapy.downloadermiddlewares.redirect.MetaRefreshMiddleware': 580,
    'scrapy.downloadermiddlewares.httpcompression.HttpCompressionMiddleware': 590,
    'scrapy.downloadermiddlewares.redirect.RedirectMiddleware': 600,
    'scrapy.downloadermiddlewares.cookies.CookiesMiddleware': 700,
    'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 750,
    'scrapy.downloadermiddlewares.stats.DownloaderStats': 850,
    'scrapy.downloadermiddlewares.httpcache.HttpCacheMiddleware': 900,
    # Downloader side
}

# 是否启用下载器统计信息收集。
DOWNLOADER_STATS = True

# 默认情况下,RFPDupeFilter仅记录第一个重复请求。 将DUPEFILTER_DEBUG设置为True将使其记录所有重复的请求。
# DUPEFILTER_DEBUG = False
'''
用于检测和过滤重复请求的类。
默认(RFPDupeFilter)使用scrapy.utils.request.request_fingerprint函数基于请求指纹进行过滤。 
为了更改检查重复项的方式,您可以继承RFPDupeFilter并覆盖其request_fingerprint方法。 
此方法应接受scrapy Request对象并返回其指纹(字符串)。
您可以通过将DUPEFILTER_CLASS设置为'scrapy.dupefilters.BaseDupeFilter'来禁用对重复请求的过滤。 
但是要非常小心,因为你可以进入爬行循环。 在不应过滤的特定请求上将dont_filter参数设置为True通常是个更好的主意。
'''
DUPEFILTER_CLASS = 'scrapy.dupefilters.RFPDupeFilter'

# 用于使用edit命令编辑蜘蛛的编辑器。 此外,如果设置了EDITOR环境变量,编辑命令将优先于默认设置。
EDITOR = 'vi'
if sys.platform == 'win32':
    EDITOR = '%s -m idlelib.idle'

# 包含项目中启用的扩展名及其值的dict。
EXTENSIONS = {}

# 包含Scrapy中默认可用扩展名的dict及其顺序。 此设置包含所有稳定的内置扩展。 请记住,其中一些需要通过设置启用。
EXTENSIONS_BASE = {
    'scrapy.extensions.corestats.CoreStats': 0,
    'scrapy.extensions.telnet.TelnetConsole': 0,
    'scrapy.extensions.memusage.MemoryUsage': 0,
    'scrapy.extensions.memdebug.MemoryDebugger': 0,
    'scrapy.extensions.closespider.CloseSpider': 0,
    'scrapy.extensions.feedexport.FeedExporter': 0,
    'scrapy.extensions.logstats.LogStats': 0,
    'scrapy.extensions.spiderstate.SpiderState': 0,
    'scrapy.extensions.throttle.AutoThrottle': 0,
}
# Feed Temd dir允许您在使用FTP源存储和 Amazon S3上传之前设置自定义文件夹以保存搜寻器临时文件。
FEED_TEMPDIR = None
FEED_URI = None
FEED_URI_PARAMS = None  # a function to extend uri arguments
FEED_FORMAT = 'jsonlines'
FEED_STORE_EMPTY = False
FEED_EXPORT_ENCODING = None
FEED_EXPORT_FIELDS = None
FEED_STORAGES = {}
FEED_STORAGES_BASE = {
    '': 'scrapy.extensions.feedexport.FileFeedStorage',
    'file': 'scrapy.extensions.feedexport.FileFeedStorage',
    'stdout': 'scrapy.extensions.feedexport.StdoutFeedStorage',
    's3': 'scrapy.extensions.feedexport.S3FeedStorage',
    'ftp': 'scrapy.extensions.feedexport.FTPFeedStorage',
}
FEED_EXPORTERS = {}
FEED_EXPORTERS_BASE = {
    'json': 'scrapy.exporters.JsonItemExporter',
    'jsonlines': 'scrapy.exporters.JsonLinesItemExporter',
    'jl': 'scrapy.exporters.JsonLinesItemExporter',
    'csv': 'scrapy.exporters.CsvItemExporter',
    'xml': 'scrapy.exporters.XmlItemExporter',
    'marshal': 'scrapy.exporters.MarshalItemExporter',
    'pickle': 'scrapy.exporters.PickleItemExporter',
}
FEED_EXPORT_INDENT = 0

FILES_STORE_S3_ACL = 'private'
FILES_STORE_GCS_ACL = ''

FTP_USER = 'anonymous'
FTP_PASSWORD = 'guest'
FTP_PASSIVE_MODE = True

HTTPCACHE_ENABLED = False
HTTPCACHE_DIR = 'httpcache'
HTTPCACHE_IGNORE_MISSING = False
HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'
HTTPCACHE_EXPIRATION_SECS = 0
HTTPCACHE_ALWAYS_STORE = False
HTTPCACHE_IGNORE_HTTP_CODES = []
HTTPCACHE_IGNORE_SCHEMES = ['file']
HTTPCACHE_IGNORE_RESPONSE_CACHE_CONTROLS = []
HTTPCACHE_DBM_MODULE = 'anydbm' if six.PY2 else 'dbm'
HTTPCACHE_POLICY = 'scrapy.extensions.httpcache.DummyPolicy'
HTTPCACHE_GZIP = False

HTTPPROXY_ENABLED = True
HTTPPROXY_AUTH_ENCODING = 'latin-1'

IMAGES_STORE_S3_ACL = 'private'
IMAGES_STORE_GCS_ACL = ''

ITEM_PROCESSOR = 'scrapy.pipelines.ItemPipelineManager'

# 包含要使用的项目管道及其顺序的字典。顺序值是任意的,但通常将它们定义在0-1000范围内。较低订单处理较高订单前。
ITEM_PIPELINES = {}

# 包含Scrapy中默认启用的管道的dict。 您永远不应在项目中修改此设置,而是修改ITEM_PIPELINES。
ITEM_PIPELINES_BASE = {}


LOG_ENABLED = True
LOG_ENCODING = 'utf-8'
LOG_FORMATTER = 'scrapy.logformatter.LogFormatter'
LOG_FORMAT = '%(asctime)s [%(name)s] %(levelname)s: %(message)s'
LOG_DATEFORMAT = '%Y-%m-%d %H:%M:%S'

# 如果为True,则进程的所有标准输出(和错误)将重定向到日志。 例如,如果您打印('hello')它将出现在Scrapy日志中。
LOG_STDOUT = False
LOG_LEVEL = 'DEBUG'

# 用于记录输出的文件名。如果None,将使用标准误差。
LOG_FILE = None

# 如果True,日志将仅包含根路径。如果设置为,False 则它显示负责日志输出的组件
LOG_SHORT_NAMES = False

SCHEDULER_DEBUG = False

LOGSTATS_INTERVAL = 60.0

MAIL_HOST = 'localhost'
MAIL_PORT = 25
MAIL_FROM = 'scrapy@localhost'
MAIL_PASS = None
MAIL_USER = None

# 是否启用内存调试。
MEMDEBUG_ENABLED = False        # enable memory debugging

# 当启用内存调试时,如果此设置不为空,则会将内存报告发送到指定的地址,否则报告将写入日志。
MEMDEBUG_NOTIFY = []            # send memory debugging report by mail at engine shutdown

MEMUSAGE_CHECK_INTERVAL_SECONDS = 60.0
# 是否启用内存使用扩展,当超过内存限制时关闭Scrapy进程,并在发生这种情况时通过电子邮件通知。
MEMUSAGE_ENABLED = True
# 在关闭Scrapy之前允许的最大内存量(以兆字节为单位)(如果MEMUSAGE_ENABLED为True)。如果为零,则不执行检查。
MEMUSAGE_LIMIT_MB = 0
# 要达到内存限制时通知的电子邮件列表。
MEMUSAGE_NOTIFY_MAIL = []
# 在发送警告电子邮件通知之前,要允许的最大内存量(以兆字节为单位)。如果为零,则不会产生警告。
MEMUSAGE_WARNING_MB = 0

METAREFRESH_ENABLED = True
METAREFRESH_MAXDELAY = 100

# 使用genspider命令模块在哪里创建新的蜘蛛。
NEWSPIDER_MODULE = ''

'''
如果启用,Scrapy将在从同一网站获取请求时等待一段随机时间(介于0.5 * DOWNLOAD_DELAY和1.5 * DOWNLOAD_DELAY之间)。
这种随机化降低了爬行程序被分析请求的站点检测(并随后被阻止)的机会,这些站点在其请求之间的时间内寻找统计上显着的相似性。
随机化策略与wget --random-wait选项使用的策略相同。
如果DOWNLOAD_DELAY为零(默认),则此选项无效。
'''
RANDOMIZE_DOWNLOAD_DELAY = True

'''
Twisted Reactor线程池大小的上限。这是各种Scrapy组件使用的常见多用途线程池。
线程DNS解析器,BlockingFeedStorage,S3FilesStore仅举几个例子。如果您遇到阻塞IO不足的问题,请增加此值。
'''
REACTOR_THREADPOOL_MAXSIZE = 10

REDIRECT_ENABLED = True

# 定义请求可重定向的最长时间。在此最大值之后,请求的响应被原样返回。我们对同一个任务使用Firefox默认值。
REDIRECT_MAX_TIMES = 20  # uses Firefox default setting

# 相对于原始请求调整重定向请求优先级:
# 正优先级调整(默认)意味着更高的优先级。
# 负优先级调整意味着较低优先级。
REDIRECT_PRIORITY_ADJUST = +2


REFERER_ENABLED = True
REFERRER_POLICY = 'scrapy.spidermiddlewares.referer.DefaultReferrerPolicy'


RETRY_ENABLED = True

# 最大重试次数
RETRY_TIMES = 2  # initial response + 2 retries = 3 requests

# 重试状态码
RETRY_HTTP_CODES = [500, 502, 503, 504, 522, 524, 408]

# 调整相对于原始请求的重试请求优先级:
# 正优先级调整意味着更高的优先级。
# 负优先级调整(默认)表示较低优先级。
RETRY_PRIORITY_ADJUST = -1

ROBOTSTXT_OBEY = False

# 用于爬网的调度程序。
SCHEDULER = 'scrapy.core.scheduler.Scheduler'
SCHEDULER_DISK_QUEUE = 'scrapy.squeues.PickleLifoDiskQueue'
SCHEDULER_MEMORY_QUEUE = 'scrapy.squeues.LifoMemoryQueue'
SCHEDULER_PRIORITY_QUEUE = 'queuelib.PriorityQueue'

SPIDER_LOADER_CLASS = 'scrapy.spiderloader.SpiderLoader'
SPIDER_LOADER_WARN_ONLY = False

# 包含在您的项目中启用的爬虫中间件的字典及其顺序。
SPIDER_MIDDLEWARES = {}

# 包含在Scrapy中默认启用的爬虫中间件的字典及其顺序。值越低越靠近引擎,值越高越接近爬虫。
SPIDER_MIDDLEWARES_BASE = {
    # Engine side
    'scrapy.spidermiddlewares.httperror.HttpErrorMiddleware': 50,
    'scrapy.spidermiddlewares.offsite.OffsiteMiddleware': 500,
    'scrapy.spidermiddlewares.referer.RefererMiddleware': 700,
    'scrapy.spidermiddlewares.urllength.UrlLengthMiddleware': 800,
    'scrapy.spidermiddlewares.depth.DepthMiddleware': 900,
    # Spider side
}

# Scrapy将寻找爬虫的模块列表。
SPIDER_MODULES = []

STATS_CLASS = 'scrapy.statscollectors.MemoryStatsCollector'
STATS_DUMP = True

# 在蜘蛛完成scraping后发送Scrapy统计数据。
STATSMAILER_RCPTS = []

# 使用startproject命令和新爬虫创建新项目时使用命令查找模板的目录 genspider 。
# 项目名称不得与子目录中的自定义文件或目录的名称冲突project。
TEMPLATES_DIR = abspath(join(dirname(__file__), '..', 'templates'))

# 允许抓取网址的最大网址长度。
URLLENGTH_LIMIT = 2083

# 检索时使用的默认用户代理,除非被覆盖。
USER_AGENT = 'Scrapy/%s (+https://scrapy.org)' % import_module('scrapy').__version__

# 布尔值,指定是否 启用telnet控制台(如果其扩展名也启用)。
TELNETCONSOLE_ENABLED = 1
# 用于telnet控制台的端口范围。如果设置为None或0,则使用动态分配的端口。
TELNETCONSOLE_PORT = [6023, 6073]
TELNETCONSOLE_HOST = '127.0.0.1'
TELNETCONSOLE_USERNAME = 'scrapy'
TELNETCONSOLE_PASSWORD = None

SPIDER_CONTRACTS = {}
SPIDER_CONTRACTS_BASE = {
    'scrapy.contracts.default.UrlContract': 1,
    'scrapy.contracts.default.ReturnsContract': 2,
    'scrapy.contracts.default.ScrapesContract': 3,
}

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!