Scrapy_Redis Settings.py设置文件

本文详细介绍了Scrapy爬虫框架的各项关键配置参数,包括UA模拟、并发请求管理、下载延时设置、日志记录、中间件及管道配置等,并探讨了如何通过调整这些参数优化爬虫性能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设置ua,来模拟浏览器请求

#USER_AGENT = 'downloadmiddlerware (+http://www.yourdomain.com)'

设置请求的最大并发数据(下载器) 默认是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

关于日志信息的设置

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'

设置去重组件,使用的是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

转自:https://www.jianshu.com/p/7bc1b21d8073

Traceback (most recent call last): File "/root/anaconda3/bin/scrapy", line 8, in <module> sys.exit(execute()) File "/root/anaconda3/lib/python3.9/site-packages/scrapy/cmdline.py", line 160, in execute cmd.crawler_process = CrawlerProcess(settings) File "/root/anaconda3/lib/python3.9/site-packages/scrapy/crawler.py", line 332, in __init__ super().__init__(settings) File "/root/anaconda3/lib/python3.9/site-packages/scrapy/crawler.py", line 202, in __init__ self.spider_loader = self._get_spider_loader(settings) File "/root/anaconda3/lib/python3.9/site-packages/scrapy/crawler.py", line 196, in _get_spider_loader return loader_cls.from_settings(settings.frozencopy()) File "/root/anaconda3/lib/python3.9/site-packages/scrapy/spiderloader.py", line 72, in from_settings return cls(settings) File "/root/anaconda3/lib/python3.9/site-packages/scrapy/spiderloader.py", line 27, in __init__ self._load_all_spiders() File "/root/anaconda3/lib/python3.9/site-packages/scrapy/spiderloader.py", line 56, in _load_all_spiders for module in walk_modules(name): File "/root/anaconda3/lib/python3.9/site-packages/scrapy/utils/misc.py", line 106, in walk_modules submod = import_module(fullpath) File "/root/anaconda3/lib/python3.9/importlib/__init__.py", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked File "<frozen importlib._bootstrap>", line 680, in _load_unlocked File "<frozen importlib._bootstrap_external>", line 850, in exec_module File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed File "/home/house_info/house_info/spiders/HouseSpyder.py", line 2, in <module> from scrapy_redis.spiders import RedisSpider ModuleNotFoundError: No module named 'scrapy_
最新发布
03-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值