项目名称
BOT_NAME = 'downloadmiddlerware'
爬虫存储的文件路径
SPIDER_MODULES = ['downloadmiddlerware.spiders']
创建爬虫文件的模版,创建号的爬虫文件会存放在这个目录下
NEWSPIDER_MODULE = 'downloadmiddlerware.spiders'
设置ua,来模拟浏览器请求
#USER_AGENT = 'downloadmiddlerware (+http://www.yourdomain.com)'
设置是否需要准守robot协议:默认为True
ROBOTSTXT_OBEY = False
设置请求的最大并发数据(下载器) 默认是16
#CONCURRENT_REQUESTS = 32
设置请求的下载延时,默认为0
#DOWNLOAD_DELAY = 3
设置网站的最大并发请求数量,默认是8
#CONCURRENT_REQUESTS_PER_DOMAIN = 16
设置某个ip的最大并发请求数量,默认是0
如果非0
1.CONCURRENT_REQUESTS_PER_DOMAIN不生效,
这时候请求的并发数量将针对于ip,而不是网站了
2.设置的DOWNLOAD_DELAY就是正对于ip而不是网站了
CONCURRENT_REQUESTS_PER_IP = 16
是否携带cookies:默认为True
COOKIES_ENABLED = False
COOKIES_DEBUG:跟踪cookies,默认情况下为False
COOKIES_DEBUG =True
关于日志信息的设置
LOG_FILE = 'xxx.log'
LOG_LEVEL = 'INFO/DEBUG/....'
是一个终端的扩展插件
#TELNETCONSOLE_ENABLED = False
设置默认的请求头(cookies信息不要放在这里)
DEFAULT_REQUEST_HEADERS = {
# 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
# 'Accept-Language': 'en',
'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Mobile Safari/537.36',
}
设置和激活爬虫中间件
#SPIDER_MIDDLEWARES = {
# 'downloadmiddlerware.middlewares.DownloadmiddlerwareSpiderMiddleware': 543,
#}
设置和激活下载中间件(后面的数字表示优先级)
DOWNLOADER_MIDDLEWARES = {
# 'downloadmiddlerware.middlewares.DownloadmiddlerwareDownloaderMiddleware': 543,
# 'downloadmiddlerware.middlewares.UserAgentDownloadMiddlerware':543,
'downloadmiddlerware.middlewares.SeleniumDownloadMiddlerWare':543,
}
设置扩展
#EXTENSIONS = {
# 'scrapy.extensions.telnet.TelnetConsole': None,
#}
设置和激活管道文件(后面的数字表示优先级)
#ITEM_PIPELINES = {
# 'downloadmiddlerware.pipelines.DownloadmiddlerwarePipeline': 300,
#}
自动限速的扩展(实现上一个请求和下一个请求之间的时间是不固定的)
默认请情框下自动限速的扩展是关闭的:AUTOTHROTTLE_ENABLED:False
# AUTOTHROTTLE_ENABLED = True
初始的下载吧延时默认是5秒
# AUTOTHROTTLE_START_DELAY = 5
最大下载延时
# AUTOTHROTTLE_MAX_DELAY = 60
针对于网站的最大的并行请求数量
# AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0
调试模式:默认为False,未开启
# AUTOTHROTTLE_DEBUG = False
设置数据的缓存,默认情况下是未开启的
HTTPCACHE_ENABLED = True
设置缓存的超时时间,默认为0表示永久有效
HTTPCACHE_EXPIRATION_SECS = 0
设置缓存的存储文件路径
HTTPCACHE_DIR = 'httpcache'
忽略某些状态码的请求结果(Response)
HTTPCACHE_IGNORE_HTTP_CODES = []
开始缓存的扩展插件
HTTPCACHE_STORAGE = 'scrapy.extensions.httpcache.FilesystemCacheStorage'
USERAGENT = [
'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1',
'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
]
代理
PROXIES = [
{'ip':'127.0.0.1:6379','pwd':'zyx:123456'},
{'ip':'127.0.0.1:6379','pwd':None},
{'ip':'127.0.0.1:6379','pwd':None},
{'ip':'127.0.0.1:6379','pwd':None},
{'ip':'127.0.0.1:6379','pwd':None},
]
cookies池
COOKIES = [
{'cookie1':'xxxxxx'},
{'cookie1':'xxxxxx'},
{'cookie1':'xxxxxx'},
{'cookie1':'xxxxxx'},
]
设置去重组件,使用的是scrapy_redis的去重组件,而不再使用scrapy框架自己的去重组件了
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
设置调度器,使用的是scrapy_redis重写的调度器,而不再使用scrapy框架自带的调度器了
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
可以实现断点爬取(请求的记录不会丢失,会存储在redis数据库中,不会清除redis的任务队列)
SCHEDULER_PERSIST = True
设置任务队列的模式
SpiderPriorityQueue是scrapy_redis默认使用的队列模式(有自己的优先级)
SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderPriorityQueue"
使用了队列的形式,任务先进先出
#SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderQueue"
采用了栈的形式,任务先进后出
#SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderStack"
ITEM_PIPELINES = {
'example.pipelines.ExamplePipeline': 300,
# 实现这个管道,可以将爬虫端获取的item数据,统一保存在redis数据库中
'scrapy_redis.pipelines.RedisPipeline': 400,
}
指定要存储的redis数据库的主机ip
REDIS_HOST = '127.0.0.1'
指定redis数据库主机的端口
REDIS_PORT = 6379
仅为个人学习小结,若有错处,欢迎指正~