• 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,
    }
  • 相关阅读:
    js 遍历数组对象求和
    小程序使用微信地址or小程序跳转设置页
    css内容渐入效果实现
    flutter实现文字超出最大宽度显示省略号
    flutter查看安全码SHA1
    Uncaught (in promise)
    小程序iphone蒙层滚动穿透
    map中使用箭头函数遇到的坑
    骨架屏css样式
    javascript(js)反转字符串
  • 原文地址:https://www.cnblogs.com/Hubz131/p/10916046.html
Copyright © 2020-2023  润新知