scrapy_redis分布式爬取酷狗音乐

1 篇文章 0 订阅
1 篇文章 0 订阅

前言

文章仅供学习交流使用,切勿他用。如有侵权,请联系本人处理。

上次我们完成了使用scrapy框架爬取酷狗音乐,今天我们试试scrapy_redis。
上一篇 : scrapy爬取酷狗音乐

安装scrapy_redis

pip install -i https://pypi.douban.com/simple scrapy_redis

创建scrapy项目

想必,我们应该得心应手了

scrapy startproject KugouMusicSpiderRedis
cd KugouMusicSpiderRedis
scrapy genspider kugou_music_spider_redis www.kugou.com/

spider模块

直接将上次的代码copy过来,有几点需要注意

  • 我们的spider需要继承RedisSpider
  • 可以不需要变量start_urls
  • 添加必要变量redis_key,见名思意,无需多言。建议以spider_name:start_url命名
  • 不要复写start_requests方法,使用parse方法解析就行了。想实现相同功能的话可以参考scrapy-redis记录,重写make_requests_from_url实现start_url

这里,我们可以直接将parse_index方法改为parse即可

    def parse(self, response):
        """
        根据酷狗首页获取'更多'歌手连接(即歌手首页)
        :param response:
        :return:
        """
        singer_index_url = response.xpath('//div[@id="tabMenu"]//a[@class="more"]/@href').extract_first()
        singer_index_url = parse.urljoin(response.url, singer_index_url)
        yield Request(
            url=singer_index_url,
            callback=self.parse_singer_index,
            dont_filter=True
        )

items模块、pipelines模块

这两个模块同之前的代码,无需修改

setting.py

可以参见github使用文档,总的来说

  • 添加SCHEDULER = "scrapy_redis.scheduler.Scheduler",这个应该是注册调度器,使Redis可以调度存储request队列功能
  • 添加 DUPEFILTER_CLASS = "scrapy_redis.dupefilter.RFPDupeFilter",确保redis过滤所有spider的请求是否重复
  • ITEM_PIPELINES = { 'scrapy_redis.pipelines.RedisPipeline':300},确保item可以存在redis中让不同的机器可以处理,这里我只有一台机器,便没有使用这个玩意,仍然使用我们自己原来的pipeline来处理
  • 其他可选参数,大家自行参考文档抉择

调试

类似之前爬取的处理,还是在main.py文件中先调试

运行

  1. 先启动我们的redis服务端redis_server

  2. 启动我们的爬虫scrapy crawl kugou_music_spider_redis,可以看到在这里插入图片描述

  3. 启动redis客户端redis_cli

  4. redis客户端中加入我们的start_urllpush kugou_music https://www.kugou.com/,切回程序终端,就可以看到抓取行动开始了

成果图

在这里插入图片描述

源码

代码托管于github,传送门,截止发文,有效。
部分资料可参考
scrapy官方文档
scrapy_redis
scrapy框架爬取酷狗音乐

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值