声明

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

上次我们完成了使用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. Centos下部署最后一版支持Docker的k8s集群

    部署版本 首先要确定部署的版本 查询Kubernetes对Docker支持的情况 kubernetes/dependencies.yaml at master · kubernetes/kuberne ...

  2. [常用工具] PyAutoGUI使用教程

    PyAutoGUI使用教程 目录 PyAutoGUI使用教程 1 基础知识 2 一般函数 3 故障保险 4 鼠标函数 4.1 鼠标移动 4.2 鼠标拖动 4.3 鼠标单击 4.4 鼠标滚动 4.5 鼠 ...

  3. python进阶之路14 之函数内置方法、可迭代对象、异常捕获处理

    重要内置函数 1.map() 映射 l1 = [1, 2, 3, 4, 5] # def func(a): # return a+1 res = map(lambda x:x+1, l1) print ...

  4. Volcano 社区 v1.7.0 版本正式发布 | 云原生批量计算

    摘要:北京时间2023年1月9日,Volcano社区v1.7.0版本正式发布. 本文分享自华为云社区<Volcano 社区 v1.7.0 版本正式发布 | 云原生批量计算>,作者:华为云云 ...

  5. MySQL-数据库、MySQL

    1.存取数据的演变史 1.文本文件: 文件路径不固定(导致代码兼容性下降) 数据格式不统一:(max|123, max_123) 2.软件开发目录规范: 1.规定了数据应该保存在db目录下>&g ...

  6. git02 IDEA使用git

    1 定位 Git 程序 2 初始化本地库 选择要创建 Git 本地仓库的工程. 3 添加项目到暂存区 右键点击项目选择 Git -> Add 将项目添加到暂存区 4 提交到本地库 5 切换版本 ...

  7. 2211-22学习记录之python百分数,time模块

    百分数 print(' {:.0%}'.format(84/100)) 输出为84% 以上百分数输出是使用到了字符串格式化函数format(),在其中将分数42/50作为值给传递了进去.如果将分子分母 ...

  8. MongoDB数据库记录

    启动 MongoDB 服务 标准 URI 连接语法: mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:po ...

  9. cannot load "mso.dll" vs2008 web开发问题

    已成功解决办法: ①将VS 2008安装包WCUWebDesignerCoreWebDesignerCore.exe提取并重新安装: ②将C:Program Files/Common Files/Mi ...

  10. 一段简单的对TXT文件的操作代码

    1 string txt = @"C:\DetectFolder\IPV4地址.txt"; 2 string path = ""; 3 4 if (File.E ...