scrapy配置讲解

其实在官方文档中,都有明确的事例和说明,这里只记录下工作中常用的一些配置,以便快速查找

配置方式

该文章在后续工作中不断更新

  1. setting.py 文件中配置
  2. 在单个爬虫文件中通过 custom_settings 来对爬虫进行独立配置

方法 2 是在 custom_settings 中是字典形式配置,如下

1
2
3
4
5
6
7
custom_settings = {
'ITEM_PIPELINES': {
'pipelines.pipelines_play.PlayInfoTwoPipeline': 300,
},
'CLOSESPIDER_TIMEOUT': 10,
}
# 配置写到 custom_settings 中

基础配置

作用 配置
关闭协议 ROBOTSTXT_OBEY=False 尊重 robots
日志等级 LOG_LEVEL = 'DEBUG'
日志文件 LOG_FILE = time.strftime("%Y%m%d", time.localtime())+'.log'
下载中间件 DOWNLOADER_MIDDLEWARES = {}
item 中间件 ITEM_PIPELINES = {}

并发、延迟控制

作用 配置
并发请求最大值 CONCURRENT_REQUESTS=16 默认 16
最大深度 DEPTH_LIMIT = 0
制定等待 DOWNLOAD_DELAY = 0 指定访问间隔
随机等待 RANDOMIZE_DOWNLOAD_DELAY = True 随机访问间隔

异常请求处理

作用 配置
超时等待时间 DOWNLOAD_TIMEOUT=10 设置超时等待时间
重试处理 DOWNLOAD_FAIL_ON_DATALOSS = False
重试次数 RETRY_TIMES = 10
Redirect 中间件 REDIRECT_ENABLED = False 设置重定向
忽略非200状态码的response HTTPERROR_ALLOWED_CODES = [301, 302]

分布式配置

作用 配置
set指纹去重 DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter'
调度器 SCHEDULER = 'scrapy_redis.scheduler.Scheduler'
可暂停 SCHEDULER_PERSIST = True

请求携带内容

作用 配置
默认请求头 DEFAULT_REQUEST_HEADERS={'': '',}
开启 cookies COOKIES_ENABLED = True

其他常用配置

作用 配置
自动结束 CLOSESPIDER_TIMEOUT = 10 爬虫运行10秒强制结束
日志等级 LOG_LEVEL = 'DEBUG'
设置 UA USER_AGENT=''