其实在官方文档中,都有明确的事例和说明,这里只记录下工作中常用的一些配置,以便快速查找
配置方式
该文章在后续工作中不断更新
- 在
setting.py
文件中配置 - 在单个爬虫文件中通过
custom_settings
来对爬虫进行独立配置
方法 2 是在 custom_settings
中是字典形式配置,如下
1 | 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='' |