scrapy_redis 分布式爬取酷狗音乐
声明
文章仅供学习交流使用,切勿他用。如有侵权,请联系本人处理。
上次我们完成了使用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文件中先调试
运行
先启动我们的redis服务端
redis_server启动我们的爬虫
scrapy crawl kugou_music_spider_redis,可以看到
启动redis客户端
redis_cliredis客户端中加入我们的start_url
lpush kugou_music https://www.kugou.com/,切回程序终端,就可以看到抓取行动开始了
成果图

源码
代码托管于github,传送门,截止发文,有效。
部分资料可参考
scrapy官方文档
scrapy_redis
scrapy 爬取酷狗热门歌手音乐
scrapy_redis 分布式爬取酷狗音乐的更多相关文章
- Java爬虫系列之实战:爬取酷狗音乐网 TOP500 的歌曲(附源码)
在前面分享的两篇随笔中分别介绍了HttpClient和Jsoup以及简单的代码案例: Java爬虫系列二:使用HttpClient抓取页面HTML Java爬虫系列三:使用Jsoup解析HTML 今天 ...
- python爬取酷狗音乐排行榜
本文为大家分享了python爬取酷狗音乐排行榜的具体代码,供大家参考,具体内容如下
- python使用beautifulsoup4爬取酷狗音乐
声明:本文仅为技术交流,请勿用于它处. 小编经常在网上听一些音乐但是有一些网站好多音乐都是付费下载的正好我会点爬虫技术,空闲时间写了一份,截止4月底没有问题的,会下载到当前目录,只要按照bs4库就好, ...
- 使用scrapy 爬取酷狗音乐歌手及歌曲名并存入mongodb中
备注还没来得及写,共爬取八千多的歌手,每名歌手平均三十首歌曲算,大概二十多万首歌曲 run.py #!/usr/bin/env python # -*- coding: utf-8 -*- __aut ...
- python爬取酷狗音乐
url:https://www.kugou.com/yy/html/rank.html 我们随便访问一个歌曲可以看到url有个hash https://www.kugou.com/song/#hash ...
- 【Python】【爬虫】爬取酷狗音乐网络红歌榜
原理:我的上篇博客 import requests import time from bs4 import BeautifulSoup def get_html(url): ''' 获得 HTML ' ...
- Python爬取酷狗飙升榜前十首(100)首,写入CSV文件
酷狗飙升榜,写入CSV文件 爬取酷狗音乐飙升榜的前十首歌名.歌手.时间,是一个很好的爬取网页内容的例子,对爬虫不熟悉的读者可以根据这个例子熟悉爬虫是如何爬取网页内容的. 需要用到的库:requests ...
- 【Python】【爬虫】爬取酷狗TOP500
好啦好啦,那我们来拉开我们的爬虫之旅吧~~~ 这一只小爬虫是爬取酷狗TOP500的,使用的爬取手法简单粗暴,目的是帮大家初步窥探爬虫长啥样,后期会慢慢变得健壮起来的. 环境配置 在此之前需要下载一个谷 ...
- htmlunit+fastjson抓取酷狗音乐 qq音乐链接及下载
上次学了jsoup之后,发现一些动态生成的网页内容是无法抓取的,于是又学习了htmlunit,下面是抓取酷狗音乐与qq音乐链接的例子: 酷狗音乐: import java.io.BufferedInp ...
- 使用Xpath爬取酷狗TOP500的歌曲信息
使用xpath爬取酷狗TOP500的歌曲信息, 将排名.歌手名.歌曲名.歌曲时长,提取的结果以文件形式保存下来.参考网址:http://www.kugou.com/yy/rank/home/1-888 ...
随机推荐
- Java正则表达式全局匹配
今天想用Java的正则在字符串中匹配特定内容,但是当我代码写好运行后却发现正则表达式并没有起作用 试了很多方法,也去Js里试了正则表达式可以走通,就是Java不行 很纳闷 (:′⌒`) Java里正则 ...
- 防微杜渐,未雨绸缪,百度网盘(百度云盘)接口API自动化备份上传以及开源发布,基于Golang1.18
奉行长期主义的开发者都有一个共识:对于服务器来说,数据备份非常重要,因为服务器上的数据通常是无价的,如果丢失了这些数据,可能会导致严重的后果,伴随云时代的发展,备份技术也让千行百业看到了其" ...
- CC1链详解
前言:这篇文章是对CC1的总结,个人学习,如有不对请多指教.谢谢! 环境:jdk8u71以下,因为在该jdk版本以上这个漏洞已经被修复了 下载链接:https://www.oracle.com/cn/ ...
- 又花了半个小时将 ChatGPT 接入了钉钉机器人
前面的文章给大家介绍了如何在个人微信中使用 ChatGPT,但是大家都知道这种操作是有风险的,所以都让大家使用小号,今天再给大家介绍一下如何在钉钉中使用机器人来调戏 AI. 流程 注册钉钉开发者平台账 ...
- Listary 文件搜索工具
Listary简介 Listary是一款强大的全盘文件搜索.软件启动效率工具,双击Ctrl随时调出搜索框,全盘海量文件毫秒级检索,快速定位打开所需文件.集成右键菜单和诸多自定义动作,适配Windows ...
- 电商网站Web自动化测试实战( 编写京东搜索脚本python+selenium框架)
电商网站Web自动化测试实战( 编写京东搜索脚本) 1,打开京东页 京东首页地址:https://www.jd.com/,故进入京东首页如下: 2,打开浏览器开发者模式 定位元素前需先打开浏览器开发者 ...
- 无法将“obj\Debug\net5.0\xxx.dll”复制到“bin\Debug\net5.0\xxx.dll”。超出了重试计数 10。失败。
解决办法 VS选中项目,右键清理解决方案,再次右键重新生成方案即可. 以上就是无法将"obj\Debug\net5.0\xxx.dll"复制到"bin\Debug\net ...
- ubuntu卸载eigen
1.sudo updatedb 2.locate eigen3 3.手动删除
- 数字列表number,目标值target,找到number中两个不同数字之和等于target的数字,输出下标并顺序排列 ----笔试题记录扩展
一.思路: 输入:数字列表number,目标值target 判断条件:数字列表中两个不同数字相加等于target 输出:符合条件的两个数字的下标,下标顺序排列 方法1: def list(number ...
- 【NOIP2013提高组】华容道
分析 一个比较显然的方式是 设 \(f_{i,j,x,y}\) 表示达到空格所处位置为 \((i,j)\) 且特殊格位置为 \(x,y\) 的状态的最少步数 一次可以交换空格和相邻格,代价为 \(1\ ...