声明

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

上次我们完成了使用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 爬取酷狗热门歌手音乐

scrapy_redis 分布式爬取酷狗音乐的更多相关文章

  1. Java爬虫系列之实战:爬取酷狗音乐网 TOP500 的歌曲(附源码)

    在前面分享的两篇随笔中分别介绍了HttpClient和Jsoup以及简单的代码案例: Java爬虫系列二:使用HttpClient抓取页面HTML Java爬虫系列三:使用Jsoup解析HTML 今天 ...

  2. python爬取酷狗音乐排行榜

    本文为大家分享了python爬取酷狗音乐排行榜的具体代码,供大家参考,具体内容如下  

  3. python使用beautifulsoup4爬取酷狗音乐

    声明:本文仅为技术交流,请勿用于它处. 小编经常在网上听一些音乐但是有一些网站好多音乐都是付费下载的正好我会点爬虫技术,空闲时间写了一份,截止4月底没有问题的,会下载到当前目录,只要按照bs4库就好, ...

  4. 使用scrapy 爬取酷狗音乐歌手及歌曲名并存入mongodb中

    备注还没来得及写,共爬取八千多的歌手,每名歌手平均三十首歌曲算,大概二十多万首歌曲 run.py #!/usr/bin/env python # -*- coding: utf-8 -*- __aut ...

  5. python爬取酷狗音乐

    url:https://www.kugou.com/yy/html/rank.html 我们随便访问一个歌曲可以看到url有个hash https://www.kugou.com/song/#hash ...

  6. 【Python】【爬虫】爬取酷狗音乐网络红歌榜

    原理:我的上篇博客 import requests import time from bs4 import BeautifulSoup def get_html(url): ''' 获得 HTML ' ...

  7. Python爬取酷狗飙升榜前十首(100)首,写入CSV文件

    酷狗飙升榜,写入CSV文件 爬取酷狗音乐飙升榜的前十首歌名.歌手.时间,是一个很好的爬取网页内容的例子,对爬虫不熟悉的读者可以根据这个例子熟悉爬虫是如何爬取网页内容的. 需要用到的库:requests ...

  8. 【Python】【爬虫】爬取酷狗TOP500

    好啦好啦,那我们来拉开我们的爬虫之旅吧~~~ 这一只小爬虫是爬取酷狗TOP500的,使用的爬取手法简单粗暴,目的是帮大家初步窥探爬虫长啥样,后期会慢慢变得健壮起来的. 环境配置 在此之前需要下载一个谷 ...

  9. htmlunit+fastjson抓取酷狗音乐 qq音乐链接及下载

    上次学了jsoup之后,发现一些动态生成的网页内容是无法抓取的,于是又学习了htmlunit,下面是抓取酷狗音乐与qq音乐链接的例子: 酷狗音乐: import java.io.BufferedInp ...

  10. 使用Xpath爬取酷狗TOP500的歌曲信息

    使用xpath爬取酷狗TOP500的歌曲信息, 将排名.歌手名.歌曲名.歌曲时长,提取的结果以文件形式保存下来.参考网址:http://www.kugou.com/yy/rank/home/1-888 ...

随机推荐

  1. 洛谷P1434例题分析

    [SHOI2002] 滑雪 题目描述 Michael 喜欢滑雪.这并不奇怪,因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Mic ...

  2. 痞子衡嵌入式:探讨i.MXRT下FlexSPI driver实现Flash编程时对于中断支持问题

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT下FlexSPI driver实现Flash编程时对于中断支持问题. 前段时间有客户在官方社区反映 i.MXRT1170 下 ...

  3. Kafka相关面试题及答案

    Kafka相关面试题及答案 1. Kafka中的ISR.AR又代表什么? ISR:与leader保持同步的follower集合 AR:分区的所有副本 2. Kafka中的HW.LEO等分别代表什么? ...

  4. python进阶之路5之流程控制(垃圾回收机制)

    垃圾回收机制 """ 有一些语言,内存空间的申请和释放都需要程序员自己写代码才可以完成 但是python却不需要 通过垃圾回收机制自动管理 ""&qu ...

  5. linux 基础之输入输出重定向

    输入输出重定向 输出重定向 正确命令 > 文件 (覆盖) 正确命令 >> 文件(追加) 错误命令 2> 文件(覆盖) 错误命令 2>>文件(追加) 命令> 文 ...

  6. 痞子衡嵌入式:盘点国内Cortex-M内核MCU厂商高主频产品(2023)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是国内Cortex-M内核MCU厂商高主频产品. 在 2021 年初痞子衡写了篇 <盘点国内Cortex-M内核MCU厂商高性能产品 ...

  7. css之transform属性的使用

    1.定义:Transform属性应用于元素的2D或3D转换.这个属性允许你将元素旋转,缩放,移动,倾斜等. 2.常用的属性值: (1)translate(移动):   这个属性值里面含有三个参数,依次 ...

  8. vivo 超大规模消息中间件实践之路

    作者:vivo 互联网存储技术团队-Luo Mingbo.中间件团队- Liu Runyun 本文根据"2022 vivo开发者大会"现场演讲内容整理而成. 本文主要介绍超大数据规 ...

  9. Unity跑在Awake之前的方法

    Unity跑在Awake之前的方法 一.前言 相信大家和小黑一样,在写项目的时候遇到过以下这中情况: ____两个脚本的Awake中,都有获取信息的函数被调用.可是A脚本在B脚本获取到信息之后,才可以 ...

  10. LeetCode_1. 两数之和

    写在前面 难度:简单 原文链接:https://leetcode-cn.com/problems/two-sum/ 题目  给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和 ...