scrapy_redis分布式爬虫

scrapy_redis更新下载:https://github.com/rmax/scrapy-redis

进入页面后,复制源码链接然后使用Git,通过git clone命令clone到本地:

1.修改settings.py

# 使用scrapy_redis的去重类,不使用scrapy默认的去重类
DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter"
# 使用scrapy_redis的调度器,不使用scrapy默认的调度器
SCHEDULER = "scrapy_redis.scheduler.Scheduler"
# 控制爬虫是否允许暂停
SCHEDULER_PERSIST = True
# 队列形式 先进先出 哪个请求先放到请求队列里面,哪个请求就先执行
SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderPriorityQueue"
# 栈形式 先进后出
#SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderQueue"
#SCHEDULER_QUEUE_CLASS = "scrapy_redis.queue.SpiderStack"

ITEM_PIPELINES = {
   'jobbole.pipelines.JobbolePipeline': 10,
   # 使用redis数据库所要添加的管道,如果使用redis数据库,必须添加
   'scrapy_redis.pipelines.RedisPipeline': 20
}

# 域名为字符串,端口为数字
# 如果不写,默认为本机数据库的IP
REDIS_HOST = '127.0.0.1'
REDIS_PORT = 6379

# 限制爬虫速度,防止访问过快导致IP被禁
DOWNLOAD_DELAY = 1

2.spider.py(爬虫文件)

from scrapy.spiders import Rule
from scrapy.linkextractors import LinkExtractor
# 由于下边的类需要继承自RedisCrawlSpider,所以这里需要引入
from scrapy_redis.spiders import RedisCrawlSpider

class MyCrawler(RedisCrawlSpider):
    """Spider that reads urls from redis queue (myspider:start_urls)."""
    name = 'mycrawler_redis'
    # start_urls是由master推到队列中,所以这里不写start_urls
    # 类名: + start_urls 推荐写法,标准写法
    redis_key = 'mycrawler:start_urls'

    # 制定允许爬虫的范围
    rules = (
        # follow all links
        # follow 是否继续执行后面的内容,如果有回调函数,则默认为false,反之为true
        Rule(LinkExtractor(), callback='parse_page', follow=True),
    )

    def parse_page(self, response):
    	print(response.url)

3.修改完上面两个文件之后,打开一个cmd窗口输入redis-server redis.windows.conf打开redis服务端

   scrapy crawl mycrawler_redis 运行爬虫程序.在cmd窗口中,出现下面这句话,则说明成功,

   爬虫文件正在监听redis数据库,一旦有request进入队列,就会执行.

Telnet console listening on 127.0.0.1:6023

4.打开一个新的cmd窗口,输入redis-cli连接服务端.输入下面的命令将url推到redis队列中.

lpush mycrawler:start_urls https://XXXX

5.运行之后可以看到,爬虫文件接受到request之后,开始访问数据,并且将数据返回给服务端的redis数据库

附:创建单机爬虫的命令式

scrapy genspider -t XXX  XXX.com

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值