Scrapy中的Setting
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, }