[403]scrapy setting配置及说明

参考文档http://scrapy-chs.readthedocs.io/zh_CN/1.0/topics/settings.html#topics-settings-ref

  • AUTOTHROTTLE_START_DELAY = 3
    开始下载时限速并延迟时间

  • AUTOTHROTTLE_MAX_DELAY = 60
    高并发请求时最大延迟时间

  • AWS_ACCESS_KEY_ID
    它是用于访问亚马逊网络服务。
    默认值:无

  • AWS_SECRET_ACCESS_KEY
    它是用于访问亚马逊网络服务。

  • BOT_NAME
    它是一种可以用于构建用户代理机器人的名称。
    默认值:“scrapybot”
    eg:BOT_NAME=“scrapybot”

  • CONCURRENT_ITEMS
    在用来并行地处理所述物品处理器的现有项目的最大数目。
    默认 Item 并发数:100

  • CONCURRENT_REQUESTS
    其中Scrapy下载执行现有的最大请求数。
    默认值:16
    并发是指scrapy同时处理的request的数量,默认的全局并发限制为16,可增加这个值,增加多少取决于爬虫占CPU多少,设置前最好测试一下,一般占在80-90%为好

  • CONCURRENT_REQUESTS_PER_DOMAIN
    现有的最大请求数,对于任何单域同时进行。
    默认值:8

  • CONCURRENT_REQUESTS_PER_IP
    现有的请求的最大数量的同时执行任何单一的IP。
    默认值:0(0表示忽略)

  • COOKIES_ENABLED = False
    禁止cookies,有些站点会从cookies中判断是否为爬虫

  • DEFAULT_ITEM_CLASS
    它是用来表示商品一类。
    默认值:“scrapy.item.Item”

  • DEFAULT_REQUEST_HEADERS
    它是用于Scrapy的HTTP请求的默认标题。
    默认值:

{ 
 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 
 'Accept-Language': 'en', 
}
  • DEPTH_LIMIT
    因为蜘蛛的最大深度抓取任何网站。
    默认值:0
    爬取网站最大允许的深度(depth)值。如果为0,则没有限制

  • DEPTH_PRIORITY
    整数值。用于根据深度调整request优先级。如果为0,则不根据深度进行优先级调整。
    默认值:0

  • DEPTH_STATS
    它指出是否收集详细的统计资料与否。
    默认值:True

  • DEPTH_STATS_VERBOSE
    当启用此设置,请求数统计中的每个详细深入的收集。
    默认值:False

  • DNSCACHE_ENABLED
    它是用来启用内存缓存DNS。
    默认值:True

  • DNSCACHE_SIZE
    它定义了在内存中缓存DNS的大小。
    默认值:10000

  • DNS_TIMEOUT
    它是用来设置超时DNS处理的查询。
    默认值:60

  • DOWNLOADER
    它是用来抓取过程中下载。
    默认值:“scrapy.core.downloader.Downloader”

  • DOWNLOADER_MIDDLEWARES
    这是辞典保持下载中间件和他们的订单。
    默认值: {}

  • DOWNLOADER_MIDDLEWARES_BASE
    这是默认启用的一个辞典保持下载中间件。
    默认值:

{
    'scrapy.downloadermiddlewares.robotstxt.RobotsTxtMiddleware': 100,
    'scrapy.downloadermiddlewares.httpauth.HttpAuthMiddleware': 300,
    'scrapy.downloadermiddlewares.downloadtimeout.DownloadTimeoutMiddleware': 350,
    'scrapy.downloadermiddlewares.useragent.UserAgentMiddleware': 400,
    'scrapy.downloadermiddlewares.retry.RetryMiddleware': 500,
    'scrapy.downloadermiddlewares.defaultheaders.DefaultHeadersMiddleware': 550,
    '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.chunked.ChunkedTransferMiddleware': 830,
    'scrapy.downloadermiddlewares.stats.DownloaderStats': 850,
    'scrapy.downloadermiddlewares.httpcache.HttpCacheMiddleware': 900,
}

包含Scrapy默认启用的下载中间件的字典。 永远不要在项目中修改该设定,而是修改DOWNLOADER_MIDDLEWARES

  • DOWNLOADER_STATS
    此设置用于启用下载统计。
    默认值:True

  • DOWNLOAD_DELAY
    它定义的总时间下载它从下载网站的网页之前。
    默认值:0

下载器在下载同一个网站下一个页面前需要等待的时间。该选项可以用来限制爬取速度, 减轻服务器压力。同时也支持小数。

默认情况下,Scrapy在两个请求间不等待一个固定的值, 而是使用0.5到1.5之间的一个随机值 * DOWNLOAD_DELAY 的结果作为等待间隔。

  • DOWNLOAD_HANDLERS
    它与下载处理程序的字典。
    默认值: {}

  • 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',
}
  • DOWNLOAD_TIMEOUT
    它的总时间下载到之前等待超时。
    默认值:180

  • DOWNLOAD_MAXSIZE
    这是响应的下载器下载的最大尺寸。
    默认值:1073741824 (1024MB)

  • DOWNLOAD_WARNSIZE
    它定义为响应下载警告的大小。
    默认值:33554432 (32MB)

  • DUPEFILTER_CLASS
    这是用于检测和是重复的请求的滤波的类。
    默认值:“scrapy.dupefilters.RFPDupeFilter”

  • DUPEFILTER_DEBUG
    当设置为true此设置记录所有重复的过滤器。
    默认值:False

  • EDITOR
    它是用来编辑使用编辑命令蜘蛛。
    默认值:取决于环境

  • EXTENSIONS
    它是具有在项目中启用的扩展字典。
    默认值: {}

  • EXTENSIONS_BASE
    它是具有内置的扩展字典。
    默认值:

{
    'scrapy.extensions.corestats.CoreStats': 0,
    'scrapy.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_TEMPDIR
    它是用来设置,其中履带临时文件可以存储自定义文件夹的目录。

  • ITEM_PIPELINES
    它是具有管线的字典。
    默认值: {}

  • ITEM_PIPELINES_BASE
    默认: {}
    保存项目中默认启用的pipeline的字典。 永远不要在项目中修改该设定,而是修改 ITEM_PIPELINES

  • LOG_ENABLED
    它定义如果日志被启用。
    默认值:True

  • LOG_ENCODING
    它定义了将用于记录的编码类型。
    默认值: ‘UTF-8’

  • LOG_FILE
    它是用于记录的输出文件的名称。logging输出的文件名。如果为None,则使用标准错误输出(standard error)。
    默认值:无

  • LOG_FORMAT
    它是利用它的日志信息可以被格式化的字符串。
    默认值:’%(asctime)s [%(name)s] %(levelname)s: %(message)s’

  • LOG_DATEFORMAT
    它是利用它的日期/时间可以格式化字符串。
    默认值: ‘%Y-%m-%d %H:%M:%S’

  • LOG_LEVEL
    它定义最低日志级别。
    默认值:“DEBUG”
    log的最低级别。可选的级别有: CRITICAL、 ERROR、WARNING、INFO、DEBUG 。

  • LOG_STDOUT
    此设置如果设置为true ,所有侑过程输出会出现在日志中。
    默认值:False

  • MEMDEBUG_ENABLED
    它定义如果内存调试启用。
    默认值:False

  • MEMDEBUG_NOTIFY
    它定义启用内存调试时,发送到特定地址的内存报告。
    默认值: []

  • MEMUSAGE_ENABLED
    它定义如果存储器使用是当scrapy过程超过存储器限制被启用。
    默认值:False

  • MEMUSAGE_LIMIT_MB
    如果定义了存储器的最大限制(in megabytes)被允许。在关闭Scrapy之前所允许的最大内存数(单位: MB)(如果 MEMUSAGE_ENABLED为True)。 如果为0,将不做限制。
    默认值:0

  • MEMUSAGE_CHECK_INTERVAL_SECONDS
    它用于通过设置间隔的长度,以检查本内存使用情况。
    默认值:60.0

  • MEMUSAGE_NOTIFY_MAIL
    它是用来当内存达到极限与电子邮件列表通知。
    默认值:False

  • MEMUSAGE_REPORT
    它定义如果内存使用情况报告要在关闭每个蜘蛛发送。
    默认值:False

  • MEMUSAGE_WARNING_MB
    它定义被发送警告之前被允许的总存储。
    默认值:0

  • NEWSPIDER_MODULE
    这是其中使用创造了新的蜘蛛模块genspider命令。
    默认值: ‘’

  • RANDOMIZE_DOWNLOAD_DELAY
    它定义的时候了Scrapy等待下载的同时从网站上请求一个随机量。如果启用,当从相同的网站获取数据时,Scrapy将会等待一个随机的值 (0.5到1.5之间的一个随机值 * DOWNLOAD_DELAY
    默认值:True

  • REACTOR_THREADPOOL_MAXSIZE
    它定义为在反应器线程池的最大尺寸。
    默认值:10

  • REDIRECT_MAX_TIMES
    它定义了一个请求多少次可以重定向。
    默认值:20

  • REDIRECT_PRIORITY_ADJUST
    设置时,该设置,调整的请求重定向优先级。修改重定向请求相对于原始请求的优先级。 负数意味着更多优先级
    默认值:+2

  • RETRY_PRIORITY_ADJUST
    设置时,该设置,调整请求重试的优先权。
    默认值:-1

  • RETRY_ENABLED = False
    对于失败的HTTP请求(如超时)进行重试会降低爬取效率,当爬取目标基数很大时,舍弃部分数据不影响大局,提高效率

  • ROBOTSTXT_OBEY
    当设置为Scrapy遵循robots.txt政策true 。
    默认值:False
    robots.txt 是遵循 Robot协议 的一个文件,它保存在网站的服务器中,它的作用是,告诉搜索引擎爬虫,本网站哪些目录下的网页 不希望 你进行爬取收录。在Scrapy启动后,会在第一时间访问网站的 robots.txt 文件,然后决定该网站的爬取范围。

  • SCHEDULER
    它定义了用于抓取目的调度。
    默认值:“scrapy.core.scheduler.Scheduler”

  • SPIDER_CONTRACTS
    它是在有项目蜘蛛合同测试蜘蛛的字典。
    默认值: {}

  • SPIDER_CONTRACTS_BASE
    这是保持其在Scrapy默认启用Scrapy合同的字典。
    默认值:

{
    'scrapy.contracts.default.UrlContract' : 1,
    'scrapy.contracts.default.ReturnsContract': 2,
    'scrapy.contracts.default.ScrapesContract': 3,
}
  • SPIDER_LOADER_CLASS
    它定义了实现一个类SpiderLoader API来加载蜘蛛。
    默认值:“scrapy.spiderloader.SpiderLoader”

  • SPIDER_MIDDLEWARES
    这是拿着蜘蛛中间件的字典。
    默认值: {}

  • SPIDER_MIDDLEWARES_BASE
    这是在Scrapy默认启用一个辞典保持蜘蛛中间件。
    默认值:

{
    '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_MODULES
    它是一种含有蜘蛛其中Scrapy将寻找模块列表。
    默认值: []

  • STATS_CLASS
    这是实现一类Stats Collector API来收集统计信息。
    默认值:“scrapy.statscollectors.MemoryStatsCollector”

  • STATS_DUMP
    当设置此设置true ,转储统计到日志中。
    默认值:True

  • STATSMAILER_RCPTS
    一旦蜘蛛刮完毕,Scrapy使用此设置发送统计数据。
    默认值: []

  • TELNETCONSOLE_ENABLED
    它定义是否启用telnetconsole。
    默认值:True

  • TELNETCONSOLE_PORT
    它定义了Telnet控制台端口。
    默认值:[6023,6073]

  • TEMPLATES_DIR
    它是包含可以在创建新的项目中使用的模板目录。
    默认值: templates scrapy模块内部目录

  • URLLENGTH_LIMIT
    它定义了将被允许抓取的网址的长度为URL的最大极限。
    默认值:2083

  • USER_AGENT
    它定义了在抓取网站所使用的用户代理。
    默认值: “Scrapy / VERSION“

  • setting模板文件

# -*- coding: utf-8 -*-
# Scrapy settings for companyNews 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
from DBSetting import host_redis,port_redis,db_redis,password_redis


#它是一种可以用于构建用户代理机器人的名称,默认值:'scrapybot'
BOT_NAME = 'companyNews'
# 它是一种含有蜘蛛其中Scrapy将寻找模块列表,默认值: []
SPIDER_MODULES = ['companyNews.spiders']
# 默认: '',使用 genspider 命令创建新spider的模块。
NEWSPIDER_MODULE = 'companyNews.spiders'
#-----------------------日志文件配置-----------------------------------
# 默认: True,是否启用logging。
# LOG_ENABLED=True
# 默认: 'utf-8',logging使用的编码。
# LOG_ENCODING='utf-8'
# 它是利用它的日志信息可以被格式化的字符串。默认值:'%(asctime)s [%(name)s] %(levelname)s: %(message)s'
# LOG_FORMAT='%(asctime)s [%(name)s] %(levelname)s: %(message)s'
# 它是利用它的日期/时间可以格式化字符串。默认值: '%Y-%m-%d %H:%M:%S'
# LOG_DATEFORMAT='%Y-%m-%d %H:%M:%S'
#日志文件名
#LOG_FILE = "dg.log"
#日志文件级别,默认值:“DEBUG”,log的最低级别。可选的级别有: CRITICAL、 ERROR、WARNING、INFO、DEBUG 。
LOG_LEVEL = 'WARNING'
# -----------------------------robots协议---------------------------------------------
# Obey robots.txt rules
# robots.txt 是遵循 Robot协议 的一个文件,它保存在网站的服务器中,它的作用是,告诉搜索引擎爬虫,
# 本网站哪些目录下的网页 不希望 你进行爬取收录。在Scrapy启动后,会在第一时间访问网站的 robots.txt 文件,
# 然后决定该网站的爬取范围。
# ROBOTSTXT_OBEY = True

# 对于失败的HTTP请求(如超时)进行重试会降低爬取效率,当爬取目标基数很大时,舍弃部分数据不影响大局,提高效率
RETRY_ENABLED = False
#请求下载超时时间,默认180秒
DOWNLOAD_TIMEOUT=20
# 这是响应的下载器下载的最大尺寸,默认值:1073741824 (1024MB)
# DOWNLOAD_MAXSIZE=1073741824
# 它定义为响应下载警告的大小,默认值:33554432 (32MB)
# DOWNLOAD_WARNSIZE=33554432
# ------------------------全局并发数的一些配置:-------------------------------
# Configure maximum concurrent requests performed by Scrapy (default: 16)
# 默认 Request 并发数:16
# CONCURRENT_REQUESTS = 32
# 默认 Item 并发数:100
# CONCURRENT_ITEMS = 100
# The download delay setting will honor only one of:
# 默认每个域名的并发数:8
#CONCURRENT_REQUESTS_PER_DOMAIN = 16
# 每个IP的最大并发数:0表示忽略
# CONCURRENT_REQUESTS_PER_IP = 0

# 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 会影响 CONCURRENT_REQUESTS,不能使并发显现出来,设置下载延迟
#DOWNLOAD_DELAY = 3

# Disable cookies (enabled by default)
#禁用cookies,有些站点会从cookies中判断是否为爬虫
# COOKIES_ENABLED = True
# COOKIES_DEBUG = True

# Crawl responsibly by identifying yourself (and your website) on the user-agent
# 它定义了在抓取网站所使用的用户代理,默认值:“Scrapy / VERSION“
#USER_AGENT = ' (+http://www.yourdomain.com)'

# 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 http://scrapy.readthedocs.org/en/latest/topics/spider-middleware.html
SPIDER_MIDDLEWARES = {
    'companyNews.middlewares.UserAgentmiddleware': 401,
    'companyNews.middlewares.ProxyMiddleware':426,
}
# Enable or disable downloader middlewares
# See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html
DOWNLOADER_MIDDLEWARES = {
    'companyNews.middlewares.UserAgentmiddleware': 400,
    'companyNews.middlewares.ProxyMiddleware':425,
    # 'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware':423,
     # 'companyNews.middlewares.CookieMiddleware': 700,
}
MYEXT_ENABLED=True      # 开启扩展
IDLE_NUMBER=12           # 配置空闲持续时间单位为 360个 ,一个时间单位为5s
# Enable or disable extensions
# See http://scrapy.readthedocs.org/en/latest/topics/extensions.html
# 在 EXTENSIONS 配置,激活扩展
EXTENSIONS = {
    # 'scrapy.extensions.telnet.TelnetConsole': None,
    'companyNews.extensions.RedisSpiderSmartIdleClosedExensions': 500,
}
# Configure item pipelines
# See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html
# 注意:自定义pipeline的优先级需高于Redispipeline,因为RedisPipeline不会返回item,
# 所以如果RedisPipeline优先级高于自定义pipeline,那么自定义pipeline无法获取到item
ITEM_PIPELINES = {
     #将清除的项目在redis进行处理,# 将RedisPipeline注册到pipeline组件中(这样才能将数据存入Redis)
    # 'scrapy_redis.pipelines.RedisPipeline': 400,
    'companyNews.pipelines.companyNewsPipeline': 300,# 自定义pipeline视情况选择性注册(可选)
}
# Enable and configure HTTP caching (disabled by default)
# See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html#httpcache-middleware-settings
# ----------------scrapy默认已经自带了缓存,配置如下-----------------
# 打开缓存
#HTTPCACHE_ENABLED = True
# 设置缓存过期时间(单位:秒)
#HTTPCACHE_EXPIRATION_SECS = 0
# 缓存路径(默认为:.scrapy/httpcache)
#HTTPCACHE_DIR = 'httpcache'
# 忽略的状态码
#HTTPCACHE_IGNORE_HTTP_CODES = []
# HTTPERROR_ALLOWED_CODES = [302, 301]
# 缓存模式(文件缓存)
#HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'

#-----------------Scrapy-Redis分布式爬虫相关设置如下--------------------------
# Enables scheduling storing requests queue in redis.
#启用Redis调度存储请求队列,使用Scrapy-Redis的调度器,不再使用scrapy的调度器
SCHEDULER = "scrapy_redis.scheduler.Scheduler"

# Ensure all spiders share same duplicates filter through redis.
#确保所有的爬虫通过Redis去重,使用Scrapy-Redis的去重组件,不再使用scrapy的去重组件
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"

# 默认请求序列化使用的是pickle 但是我们可以更改为其他类似的。PS:这玩意儿2.X的可以用。3.X的不能用
# SCHEDULER_SERIALIZER = "scrapy_redis.picklecompat"

# 使用优先级调度请求队列 (默认使用),
# 使用Scrapy-Redis的从请求集合中取出请求的方式,三种方式择其一即可:
# 分别按(1)请求的优先级/(2)队列FIFO/(先进先出)(3)栈FILO 取出请求(先进后出)
# SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.PriorityQueue'
# 可选用的其它队列
SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.FifoQueue'
# SCHEDULER_QUEUE_CLASS = 'scrapy_redis.queue.LifoQueue'

# Don't cleanup redis queues, allows to pause/resume crawls.
#不清除Redis队列、这样可以暂停/恢复 爬取,
# 允许暂停,redis请求记录不会丢失(重启爬虫不会重头爬取已爬过的页面)
#SCHEDULER_PERSIST = True

#----------------------redis的地址配置-------------------------------------
# Specify the full Redis URL for connecting (optional).
# If set, this takes precedence over the REDIS_HOST and REDIS_PORT settings.
# 指定用于连接redis的URL(可选)
# 如果设置此项,则此项优先级高于设置的REDIS_HOST 和 REDIS_PORT
# REDIS_URL = 'redis://root:密码@主机IP:端口'
# REDIS_URL = 'redis://root:123456@192.168.8.30:6379'
REDIS_URL = 'redis://root:%s@%s:%s'%(password_redis,host_redis,port_redis)
# 自定义的redis参数(连接超时之类的)
REDIS_PARAMS={'db': db_redis}
# Specify the host and port to use when connecting to Redis (optional).
# 指定连接到redis时使用的端口和地址(可选)
#REDIS_HOST = '127.0.0.1'
#REDIS_PORT = 6379
#REDIS_PASS = '19940225'

#-----------------------------------------暂时用不到-------------------------------------------------------
# 它定义了将被允许抓取的网址的长度为URL的最大极限,默认值:2083
# URLLENGTH_LIMIT=2083
# 爬取网站最大允许的深度(depth)值,默认值0。如果为0,则没有限制
# DEPTH_LIMIT = 3
# 整数值。用于根据深度调整request优先级。如果为0,则不根据深度进行优先级调整。
# DEPTH_PRIORITY=3

# 最大空闲时间防止分布式爬虫因为等待而关闭
# 这只有当上面设置的队列类是SpiderQueue或SpiderStack时才有效
# 并且当您的蜘蛛首次启动时,也可能会阻止同一时间启动(由于队列为空)
# SCHEDULER_IDLE_BEFORE_CLOSE = 10

# 序列化项目管道作为redis Key存储
# REDIS_ITEMS_KEY = '%(spider)s:items'

# 默认使用ScrapyJSONEncoder进行项目序列化
# You can use any importable path to a callable object.
# REDIS_ITEMS_SERIALIZER = 'json.dumps'

# 自定义redis客户端类
# REDIS_PARAMS['redis_cls'] = 'myproject.RedisClient'

# 如果为True,则使用redis的'spop'进行操作。
# 如果需要避免起始网址列表出现重复,这个选项非常有用。开启此选项urls必须通过sadd添加,否则会出现类型错误。
# REDIS_START_URLS_AS_SET = False

# RedisSpider和RedisCrawlSpider默认 start_usls 键
# REDIS_START_URLS_KEY = '%(name)s:start_urls'

# 设置redis使用utf-8之外的编码
# REDIS_ENCODING = 'latin1'

# Disable Telnet Console (enabled by default)
# 它定义是否启用telnetconsole,默认值:True
#TELNETCONSOLE_ENABLED = False

# 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

#禁止重定向
#除非您对跟进重定向感兴趣,否则请考虑关闭重定向。 当进行通用爬取时,一般的做法是保存重定向的地址,并在之后的爬取进行解析。
# 这保证了每批爬取的request数目在一定的数量, 否则重定向循环可能会导致爬虫在某个站点耗费过多资源。
# REDIRECT_ENABLED = False

启用调试工具

  • 命令行调试

scrapy shell url 查看网页,不过这种方式可能对于要请求头的网页不行,对于一般的网页还是可以的
scrapy view shell 用来查看动态加载的网页,如果查看的网页用了动态加载,那么用这个命令行打开的网页就是不完整的,肯定缺少了什么

  • 编辑器中的调试

在页面的任意位置添加如下代码

from scrapy.shell import inspect_response
def paser(self,response):
    inspect_response(response,self)     #当程序运行到这里就会跳出终端,并且在终端出现调试命令,当然这个可以随便写在哪里

暂停和恢复爬虫

初学者最头疼的事情就是没有处理好异常,当爬虫爬到一半的时候突然因为错误而中断了,但是这时又不能从中断的地方开始继续爬,顿时感觉心里日了狗,但是这里有一个方法可以暂时的存储你爬的状态,当爬虫中断的时候继续打开后依然可以从中断的地方爬,不过虽说持久化可以有效的处理,但是要注意的是当使用cookie临时的模拟登录状态的时候要注意cookie的有效期

只需要在setting.pyJOB_DIR=file_name 其中填的是你的文件目录,注意这里的目录不允许共享,只能存储单独的一个spdire的运行状态,如果你不想在从中断的地方开始运行,只需要将这个文件夹删除即可

当然还有其他的放法:scrapy crawl somespider -s JOBDIR=crawls/somespider-1,这个是在终端启动爬虫的时候调用的,可以通过ctr+c中断,恢复还是输入上面的命令

参考:https://blog.csdn.net/henry620/article/details/55505662
https://www.cnblogs.com/lambs/p/9134566.html
https://www.cnblogs.com/zhaof/p/7198407.html
https://blog.csdn.net/qq_39268193/article/details/80572328
https://segmentfault.com/a/1190000009321902

Scrapy是一个用于爬取网站数据的Python框架,它提供了一套强大的工具和API,方便开发者快速开发和配置爬虫。 要配置Scrapy爬虫,首先需要创建一个Scrapy项目。可以通过在命令行中使用以下指令来创建一个新的Scrapy项目: ``` scrapy startproject project_name ``` 这将在当前目录下创建一个名为`project_name`的新项目。 接下来,进入到项目目录中,进一步配置Scrapy爬虫。主要的配置文件是`settings.py`,可以使用任何文本编辑器打开进行编辑。 以下是一些常见的爬虫配置选项: 1. 设置爬虫的名称:可以在`settings.py`中的`BOT_NAME`选项中进行配置。 2. 配置爬取的延迟:可以在`settings.py`中的`DOWNLOAD_DELAY`选项中设置,单位为秒。 3. 配置用户代理(User-Agent):可以在`settings.py`中的`USER_AGENT`选项中设置,用于模拟不同浏览器的请求。 4. 配置请求头(Headers):可以在`settings.py`中的`DEFAULT_REQUEST_HEADERS`选项中设置,用于添加自定义请求头信息。 5. 配置爬取的起始URL:可以在爬虫类(通常是`spiders`目录下的某个Python文件)中定义一个`start_urls`列表,包含要爬取的起始URL。 除了这些常见的配置选项外,还有许多其他的配置选项可以根据具体需求进行设置。你可以参考Scrapy官方文档来了解更多详细的配置选项和用法。 配置完成后,可以编写爬虫类来定义具体的爬取逻辑,并保存在`spiders`目录下的Python文件中。在这个类中,你可以定义如何处理从网页中提取的数据、如何跟踪链接等。 最后,在命令行中运行以下指令来启动爬虫: ``` scrapy crawl spider_name ``` 其中`spider_name`是你定义的爬虫类的名称。 这是一个简单的Scrapy爬虫配置的概述。希望对你有所帮助!如有更多问题,请继续提问。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周小董

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值