scrapy爬虫实战笔记(五)

#分布式爬虫# #scrapy-redis#

基于redis实现分布式爬虫,又名scrapy-redis,redis是一个基于内存的数据库

1.概念与作用

1.1概念:多个子业务,部署在不同的服务器上;是一种将任务分布在不同地方的工作方式。(把工作分配给多台电脑同时执行)

1.2作用:提高安全性和效率

(1)默认情况下,我们使用scrapy框架进行爬虫时使用的是单机爬虫,就是说它只能在一台电脑上运行,因为爬虫调度器当中的队列queue去重和set集合都只能在本机上创建的,其他电 脑无法访问另外一台电脑上的内存和内容。

(2)分布式爬虫实现了多台电脑使用一个共同的爬虫程序,它可以同时将爬虫任务部署到多台电脑上运行,这样可以提高爬虫速度,实现分布式爬虫。

2.redis安装

2.1下载地址: https://github.com/MicrosoftArchive/redis/releases

2.2修改redis配置文件:redis.windows.conf  

允许其他电脑连接自己的redis

(1)注释 bind 127.0.0.1 允许同一个局域网内的远程访问

(2)关闭保护模式:将protected-mode yes 修改为:protected-mode no

3.实操笔记

3.1常规scrapy抓取信息,存放进item

3.2scrapy改写分布式

注:需安装模块pip install scrapy-redis

3.2.1开启redis服务

(1)提前cd到redis的安装路径

(2)启动服务:redis-server.exe redis.windows.conf

(3)启动数据库: redis-cli.exe,出现下面的图

(4)打开一个新的命令窗口cd到redis的安装路径

5)启动redisredis-cli

3.2.2改写代码

(1)settings.py中,把下面代码复制进去

(实现把redis变成我们的调度器、去重、管道存储、连接redis)

# 1.启用调度将请求存储进redis

SCHEDULER = "scrapy_redis.scheduler.Scheduler"

# 2.确保所有spider通过redis共享相同的重复过滤。

DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"

# 2.公共存储区域

ITEM_PIPELINES  =  {

    'scrapy_redis.pipelines.RedisPipeline':300,

    'my_spider.pipelines.MySpiderPipeline': 301,

}

# 3.指定连接到Redis时要使用的主机和端口。

REDIS_HOST = '127.0.0.1'

REDIS_PORT = 6379

(2)spider.py中

# 导出RedisSpider

from scrapy_redis.spiders import RedisSpider

# 类继承 RedisSpider (原来是继承scrapy.Spider)

class BookDataSpider(RedisSpider):

    pass

# 注销strat_urls 设置 redis_key = "db:start_urls" 开启爬虫钥匙

# start_urls = ['全部商品分类页']

redis_key = "book"

3.2.3把日志等级LOG_LEVEL注释掉(好像也可以保留)

3.2.4爬虫实现

(1)同时打开多个命令窗口(模拟多台电脑,伪分布式),都输入执行爬虫命令,会进入一个等待中心调度的状态

(2)启动所有爬虫

单独一个命令窗口,启动redis-shell  cd到根目录,输入redis-cli.ex

输入lpush key url

key: spider设置的redis_key

url : spider里面的start_urls

3.3把数据存储进数据库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值