【Python爬虫】 轻松几步 将 一个 scrapy项目 变成 scrapy_redis 分布式爬取

    分布式爬虫: 一般用于 爬取数量巨大 , 短时间快速爬取

    将一个正常的scrapy项目改成 scrapy_redis 分布式爬取 只需 几步简单的添加配置即可 :

  • setting.py  文件中 的参数配置:

添加:

# 使用的是scrapy_redis的去重类

DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"

# 调度器使用是scrapy_redis的调度器

SCHEDULER = "scrapy_redis.scheduler.Scheduler"

# 爬取的过程中是否允许暂停

SCHEDULER_PERSIST = True

# 连接redis数据库 (REDIS_HOST 填写的是:(主机端)master端 的 地址 )

REDIS_HOST = '127.0.0.1'

REDIS_PORT = 6379

 在 管道配置中 添加一个scrapy_redis 管道  运行优先级 自己视情况设定

ITEM_PIPELINES = {

'scrapy_redis.pipelines.RedisPipeline': 400,

}

# 最大并发请求量(只有在无delay时 才能实现)

CONCURRENT_REQUESTS = 32

# 下载延迟(建议开启延迟,当多台设备同时分布式爬取的时候,很容易让所爬取网站的服务器蹦掉的)

# DOWNLOAD_DELAY = 1

  • spiders文件中的代码修改:

 首先引入一个scrapy.redis.spider 模块:

from scrapy_redis.spiders import RedisCrawlSpider

#继承 RedisCrawlSpider 类

class AgentSpider(RedisCrawlSpider):

#分布式中没有了起始url 取而代之 的是:redis_key

class AgentSpider(RedisCrawlSpider):

            name = 'Agent'

            # allowed_domains = ['fuwu.weimob.com.cn']

            # start_urls = ['http://fuwu.weimob.com.cn/product_list.html/']

            redis_key = 'agent:start_urls'

  • 当项目中的代码全部修改完毕会后 接下来 就是 启动项目和开启redis服务器:

启动redis服务器: redis-server.exe redis.windows.conf

开启redis服务器后不要关闭,重新开启一个命令控制台(cmd)去执行接下来的操作

打开redis的图形化工具,创建一个数据库,并连接服务器

进入redis服务器: redis-cli

启动项目的方式: scrapy runspider  文件名.py

启动项目后 项目不会立马执行 , 他会等待 redis服务器那边 传一个url 过来:

lpush agent:start_urls '需要爬取得url'

猜你喜欢

转载自blog.csdn.net/bmx_rikes/article/details/82379552