#==>第一部分:基本配置<===
#1、项目名称,默认的USER_AGENT由它来构成,也作为日志记录的日志名
BOT_NAME = 'Amazon'#2、爬虫应用路径
SPIDER_MODULES = ['Amazon.spiders']
NEWSPIDER_MODULE = 'Amazon.spiders'#3、客户端User-Agent请求头
#USER_AGENT = 'Amazon (+http://www.yourdomain.com)'#4、是否遵循爬虫协议
# Obey robots.txt rules
ROBOTSTXT_OBEY = False#5、是否支持cookie,cookiejar进行操作cookie,默认开启
#COOKIES_ENABLED = False#6、Telnet用于查看当前爬虫的信息,操作爬虫等...使用telnet ip port ,然后通过命令操作
#TELNETCONSOLE_ENABLED = False
#TELNETCONSOLE_HOST = '127.0.0.1'
#TELNETCONSOLE_PORT = [6023,]#7、Scrapy发送HTTP请求默认使用的请求头
#DEFAULT_REQUEST_HEADERS = {#   'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
#   'Accept-Language': 'en',
#}#===>第二部分:并发与延迟<===
#1、下载器总共最大处理的并发请求数,默认值16
#CONCURRENT_REQUESTS = 32#2、每个域名能够被执行的最大并发请求数目,默认值8
#CONCURRENT_REQUESTS_PER_DOMAIN = 16#3、能够被单个IP处理的并发请求数,默认值0,代表无限制,需要注意两点
#I、如果不为零,那CONCURRENT_REQUESTS_PER_DOMAIN将被忽略,即并发数的限制是按照每个IP来计算,而不是每个域名
#II、该设置也影响DOWNLOAD_DELAY,如果该值不为零,那么DOWNLOAD_DELAY下载延迟是限制每个IP而不是每个域
#CONCURRENT_REQUESTS_PER_IP = 16#4、如果没有开启智能限速,这个值就代表一个规定死的值,代表对同一网址延迟请求的秒数
#DOWNLOAD_DELAY = 3#===>第三部分:智能限速/自动节流:AutoThrottle extension<===
#一:介绍
from scrapy.contrib.throttle import AutoThrottle #http://scrapy.readthedocs.io/en/latest/topics/autothrottle.html#topics-autothrottle
设置目标:
1、比使用默认的下载延迟对站点更好
2、自动调整scrapy到最佳的爬取速度,所以用户无需自己调整下载延迟到最佳状态。用户只需要定义允许最大并发的请求,剩下的事情由该扩展组件自动完成#二:如何实现?
在Scrapy中,下载延迟是通过计算建立TCP连接到接收到HTTP包头(header)之间的时间来测量的。
注意,由于Scrapy可能在忙着处理spider的回调函数或者无法下载,因此在合作的多任务环境下准确测量这些延迟是十分苦难的。 不过,这些延迟仍然是对Scrapy(甚至是服务器)繁忙程度的合理测量,而这扩展就是以此为前提进行编写的。#三:限速算法
自动限速算法基于以下规则调整下载延迟
#1、spiders开始时的下载延迟是基于AUTOTHROTTLE_START_DELAY的值
#2、当收到一个response,对目标站点的下载延迟=收到响应的延迟时间/AUTOTHROTTLE_TARGET_CONCURRENCY
#3、下一次请求的下载延迟就被设置成:对目标站点下载延迟时间和过去的下载延迟时间的平均值
#4、没有达到200个response则不允许降低延迟
#5、下载延迟不能变的比DOWNLOAD_DELAY更低或者比AUTOTHROTTLE_MAX_DELAY更高#四:配置使用
#开启True,默认False
AUTOTHROTTLE_ENABLED = True
#起始的延迟
AUTOTHROTTLE_START_DELAY = 5
#最小延迟
DOWNLOAD_DELAY = 3
#最大延迟
AUTOTHROTTLE_MAX_DELAY = 10
#每秒并发请求数的平均值,不能高于 CONCURRENT_REQUESTS_PER_DOMAIN或CONCURRENT_REQUESTS_PER_IP,调高了则吞吐量增大强奸目标站点,调低了则对目标站点更加”礼貌“
#每个特定的时间点,scrapy并发请求的数目都可能高于或低于该值,这是爬虫视图达到的建议值而不是硬限制
AUTOTHROTTLE_TARGET_CONCURRENCY = 16.0
#调试
AUTOTHROTTLE_DEBUG = True
CONCURRENT_REQUESTS_PER_DOMAIN = 16
CONCURRENT_REQUESTS_PER_IP = 16#===>第四部分:爬取深度与爬取方式<===
#1、爬虫允许的最大深度,可以通过meta查看当前深度;0表示无深度
# DEPTH_LIMIT = 3#2、爬取时,0表示深度优先Lifo(默认);1表示广度优先FiFo# 后进先出,深度优先
# DEPTH_PRIORITY = 0
# SCHEDULER_DISK_QUEUE = 'scrapy.squeue.PickleLifoDiskQueue'
# SCHEDULER_MEMORY_QUEUE = 'scrapy.squeue.LifoMemoryQueue'
# 先进先出,广度优先# DEPTH_PRIORITY = 1
# SCHEDULER_DISK_QUEUE = 'scrapy.squeue.PickleFifoDiskQueue'
# SCHEDULER_MEMORY_QUEUE = 'scrapy.squeue.FifoMemoryQueue'#3、调度器队列
# SCHEDULER = 'scrapy.core.scheduler.Scheduler'
# from scrapy.core.scheduler import Scheduler#4、访问URL去重
# DUPEFILTER_CLASS = 'step8_king.duplication.RepeatUrl'#===>第五部分:中间件、Pipelines、扩展<===
#1、Enable or disable spider middlewares
# See http://scrapy.readthedocs.org/en/latest/topics/spider-middleware.html
#SPIDER_MIDDLEWARES = {#    'Amazon.middlewares.AmazonSpiderMiddleware': 543,
#}#2、Enable or disable downloader middlewares
# See http://scrapy.readthedocs.org/en/latest/topics/downloader-middleware.html
DOWNLOADER_MIDDLEWARES = {# 'Amazon.middlewares.DownMiddleware1': 543,
}#3、Enable or disable extensions
# See http://scrapy.readthedocs.org/en/latest/topics/extensions.html
#EXTENSIONS = {#    'scrapy.extensions.telnet.TelnetConsole': None,
#}#4、Configure item pipelines
# See http://scrapy.readthedocs.org/en/latest/topics/item-pipeline.html
ITEM_PIPELINES = {# 'Amazon.pipelines.CustomPipeline': 200,
}#===>第六部分:缓存<===
"""
1. 启用缓存目的用于将已经发送的请求或相应缓存下来,以便以后使用from scrapy.downloadermiddlewares.httpcache import HttpCacheMiddlewarefrom scrapy.extensions.httpcache import DummyPolicyfrom scrapy.extensions.httpcache import FilesystemCacheStorage
"""
# 是否启用缓存策略
# HTTPCACHE_ENABLED = True# 缓存策略:所有请求均缓存,下次在请求直接访问原来的缓存即可
# HTTPCACHE_POLICY = "scrapy.extensions.httpcache.DummyPolicy"
# 缓存策略:根据Http响应头:Cache-Control、Last-Modified 等进行缓存的策略
# HTTPCACHE_POLICY = "scrapy.extensions.httpcache.RFC2616Policy"# 缓存超时时间
# HTTPCACHE_EXPIRATION_SECS = 0# 缓存保存路径
# HTTPCACHE_DIR = 'httpcache'# 缓存忽略的Http状态码
# HTTPCACHE_IGNORE_HTTP_CODES = []# 缓存存储的插件
# HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'#===>第七部分:线程池<===
REACTOR_THREADPOOL_MAXSIZE = 10#Default: 10
#scrapy基于twisted异步IO框架,downloader是多线程的,线程数是Twisted线程池的默认大小(The maximum limit for Twisted Reactor thread pool size.)#关于twisted线程池:
http://twistedmatrix.com/documents/10.1.0/core/howto/threading.html#线程池实现:twisted.python.threadpool.ThreadPool
twisted调整线程池大小:
from twisted.internet import reactor
reactor.suggestThreadPoolSize(30)#scrapy相关源码:
D:\python3.6\Lib\site-packages\scrapy\crawler.py#补充:
windows下查看进程内线程数的工具:https://docs.microsoft.com/zh-cn/sysinternals/downloads/pslist或https://pan.baidu.com/s/1jJ0pMaM命令为:pslist |findstr pythonlinux下:top -p 进程id#===>第八部分:其他默认配置参考<===
D:\python3.6\Lib\site-packages\scrapy\settings\default_settings.py

转载于:https://www.cnblogs.com/lujiacheng-Python/p/10221971.html

scrapy之settings参数相关推荐

  1. Python:Scrapy的settings

    Settings Scrapy设置(settings)提供了定制Scrapy组件的方法.可以控制包括核心(core),插件(extension),pipeline及spider组件.比如 设置Json ...

  2. Xcode环境变量,Build Settings参数

    转自:http://www.cnblogs.com/xiaodao/archive/2012/03/28/2422091.html xcode4的环境变量,Build Settings参数,works ...

  3. Scrapy框架的学习(8.scrapy中settings.py里面配置说明以及怎样设置配置或者参数以及怎样使用)

    1.settings.py里面的参数说明 每个参数其对应的官方得文档的网址 # -*- coding: utf-8 -*-# Scrapy settings for tencent project # ...

  4. Python爬虫:scrapy框架请求参数meta、headers、cookies一探究竟

    对于scrapy请参数,会经常用到,不过没有深究 今天我就来探索下scrapy请求时所携带的3个重要参数headers, cookies, meta 原生参数 首先新建myscrapy项目,新建my_ ...

  5. build settings参数详解

    1.Installation Directory:安装路径 静态库编译时,在Build Settings中Installation Directory设置"$(BUILT_PRODUCTS_ ...

  6. scarpy框架如何在crawl中正确传递自定义参数,scrapy.cmdline的execute为什么不能在while True中无限循环,execute换成crawl 方法

    问题:scrapy.cmdline的execute函数执行完毕为什么一定会停,不能执行后面函数,也不在while True中无限循环(解决问题的结果 在最后) 我想让scrapy程序全年无休止运行,2 ...

  7. 爬虫(十五):scrapy中的settings详解

    Scrapy设定(settings)提供了定制Scrapy组件的方法.你可以控制包括核心(core),插件(extension),pipeline及spider组件.设定为代码提供了提取以key-va ...

  8. Scrapy 遇到的小坑_关于payload参数_scrapy第一次发送POST请求

    Scrapy框架第一发送POST请求遇到的小坑 前言: 爬取一个数据开发平台 悦采 网, 爬取上面的招标_采购信息. 小坑:requests能获取到内容,改成scrapy却不能获取到内容,而且请求信息 ...

  9. scrapy配置文件操作核心API解读

    scrapy是一个重型框架,但是在使用中却感觉很方便,只需要配置一下,写一点核心的代码,就可以实现高并发爬虫,这是得益于他的强大配置文件的机制,内置很多默认配置,同时还给用户提供了外在的配置,并解决其 ...

最新文章

  1. python get sheet_使用xlwt’get_sheet’方法访问工作表
  2. SpringCloud与Docker微服务架构实战pdf
  3. 远程线程注入引出的问题
  4. Spring集成web环境步骤
  5. string replace
  6. WebShop WebSocket server 和WebSocket客户端的一对多关系维护
  7. 简述使用REST API 的最佳实践
  8. 【Java】获取并打印当前堆栈的方法
  9. greenplum 外部表 oracle,GREENPLUM使用技巧(一)- 使用外部表实现DBLINK功能
  10. 教你6步定制你的Ubuntu桌面
  11. 【深入理解JVM】:Java对象的创建、内存布局、访问定位
  12. DolphinPHP(海豚PHP)实战教程
  13. 使用Maven构建Eova项目
  14. Visio有用的画图技巧
  15. 最通俗PLC教程—源自Koyo光洋PLC自学总结(3)
  16. 【序列化】Kryo 的几种常见序列化实现方式,及其兼容性
  17. HDU2058 The sum problem(数学问题)
  18. 《计算机网络实验教程》——验证性实验
  19. 解决WinBUGS14 error:cannot bracket slice for node gamma[3]
  20. 《计算机图形学》实验报告区域填充扫描线算法

热门文章

  1. MySQL中获取天、周、月等数据
  2. hadoop题目(一)
  3. Linux环境下手动配置sbt
  4. Cloud Insight!StatsD 系监控产品新宠!
  5. 浅析django的abstract,proxy, managed
  6. Solaris 10装置jdk1.6及改削成默许JDK
  7. linux可以装在硬盘吗,在硬盘上安装Linux系统
  8. cocos2dx标准容器_Cocos2d-x3.0模版容器详解之三:cocos2d::Value
  9. w25n01g 代码_W25N01GV 驱动
  10. Cow Digit Game(博弈论:sg函数)