Scrapy框架 settings.py文件中常用的配置值

😃

Scrapy设定(settings)提供了定制Scrapy组件的方法。

你可以控制包括核心(core),插件(extension),pipeline及spider组件。

设定为代码提供了提取以key-value映射的配置值的的全局命名空间(namespace)。


主要记录一下常用的几个内置的配置文件,以便以后好查询。标记重要的,那一定很重要


  • ROBOTSTXT_OBEY = True重要

    是否遵守机器人协议,默认是True,开始爬虫的时候,记得改成 False

  • CONCURRENT_ITEMS

    Item Processor(即 Item Pipeline) 同时处理(每个response的)item的最大值。默认是 100,刚创建的项目中,settings文件是没有的。

    如需使用,在settings文件中加上即可

  • CONCURRENT_REQUESTS

    Scrapy downloader 并发请求(concurrent requests)的最大值。默认是 16

  • CONCURRENT_REQUESTS_PER_DOMAIN

    对单个网站进行并发请求的最大值。 默认值是 16

  • CONCURRENT_REQUESTS_PER_IP

    能够被单个IP处理的并发请求数,默认值0,代表无限制,需要注意,如果不为零,那CONCURRENT_REQUESTS_PER_DOMAIN将被忽略,即并发数的限制是按照每个IP来计算,而不是每个域名

  • DOWNLOAD_DELAY重要

    如果没有开启智能限速,这个值就代表一个规定死的值,代表对同一网址延迟请求的秒数。一般是防止IP被封的有效手段之一。对了,默认值是 0

  • DOWNLOAD_TIMEOUT重要

    下载器超时时间(单位: 秒)。默认值180秒,时间也太特么的长了,当时使用IP代理池,忘记重设超时时间,导致爬取效率极低。所以,一定要记得设置超时时间,一般设置5到10秒。

  • COOKIES_ENABLED重要

    是否支持cookie,cookiejar进行操作cookie,默认开启,对于某些网站,需要开启cookie才能爬取,有些需要关闭。需要具体分析。

  • DEFAULT_REQUEST_HEADERS

    Scrapy HTTP Request使用的默认header。由 DefaultHeadersMiddleware 产生。可以用来修改UA,不过我很少在这里修改。

  • USER_AGENT重要

    客户端User-Agent请求头,一定要记得改,默认的请求头是个什么玩意。

  • 两个中间件,一个是 DOWNLOADER_MIDDLEWARES,另一个是 SPIDER_MIDDLEWARES

    关于DOWNLOADER_MIDDLEWARES 的用法可以参考我的另一篇博客 点这

    为什么我只说了下载器中间件?因为我TMD至今还没使用过爬虫中间件

    你可以在这里添加你自己定义的中间件,也可以禁用scrapy内置的中间件。

  • ITEM_PIPELINES重要

    保存项目中启用的pipeline及其顺序的字典。该字典默认为空,值(value)任意。 不过值(value)习惯设定在0-1000范围内。自己写的PIPELINE一定要记得添加进去噢

  • 关于日志的常用配置

    • LOG_ENABLED 也就是要不要开启日志的意思, 默认是True
    • LOG_ENCODING 日志的编码,默认是 utf-8
    • LOG_FILE 日志的文件,默认是None,也就是输出到控制台
    • LOG_LEVEL 日志的级别。默认是 DEBUG,可选的级别有: CRITICAL、 ERROR、WARNING、INFO、DEBUG。DEBUG为最低级别,日志输出DEBUG及以上级别的信息
  • REDIRECT_ENABLEDREDIRECT_MAX_TIMES (重要)

    是否启用Redirect中间件,及其单个请求将遵循的最大重定向数。默认是启动中间件,单个请求最大的重定向数,默认为20

  • HTTPERROR_ALLOWED_CODES

    允许处理的状态码,一般用来处理301 302这类的状态码

  • 当然,你也可以在settings中任意写入各种配置,如数据库的。看自己的需求


以下,针对分布式爬虫 scrapy-redis的配置

1. 确保request存储到redis中

SCHEDULER = "scrapy_redis.scheduler.Scheduler"

2. 确保所有爬虫共享相同的去重指纹

DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"

3. 在redis中保持 scrapy-redis用到的队列,不会清理redis中的队列,从而可以实现暂停和恢复的功能

SCHEDULER_PERSIST = True

4. 设置 连接redis信息

REDIS_HOST = ‘192.168.43.115’
REDIS_PORT = 6379
REDIS_PARAMS = {‘password’: ‘xxx’}


未完待续…

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

aa.1735803

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

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

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

打赏作者

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

抵扣说明:

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

余额充值