scrapy简单案例:好听轻音乐网
目标:爬取好听轻音乐网热播排行榜的歌曲名称和艺术家信息
1.创建爬虫项目
在需要创建爬虫项目的文件夹下打开命令窗口,输入 scrapy startproject mspider
(mspider是项目名称),可以看到,在我的电脑里面已经创建好了这样一个项目
2.定义目标数据的字段
打开刚才创建好的mspider文件夹,里面有个items.py,打开它
输入代码如下:
import scrapyclass MspiderItem(scrapy.Item):title=scrapy.Field() #歌曲名artist=scrapy.Field() #艺术家
在我的编辑器sublime里,内容是这个样子:
3.建立爬虫文件
在mspider文件夹下打开命令窗口,输入代码:scrapy genspider musicspider htqyy.com
music是爬虫文件名称 htqyy.com是域名
musicspider爬虫文件中的代码如下:
import scrapyclass MusicspiderSpider(scrapy.Spider):name = 'musicSpider' #爬虫识别名称allowed_domains = ['http://www.htqyy.com'] #爬取得网页范围start_urls = ['http://www.htqyy.com/top/musicList/hot?pageIndex=0&pageSize=20'] #起始urldef parse(self, response):filename="music.html"data=response.body #获取响应内容open(filename,"wb").write(data) #写入到本地
4.编写爬虫文件
在mspider文件夹下打开命令窗口,输入:scrapy crawl musicSpider
(运行爬虫文件),将爬取到的网页内容以html形式保存到本地
保存下来的html文件内容是这样的:
<li class="mItem"><input type="checkbox" name="checked" checked="checked" value="33"><spanclass="num">1</span><span class="title"><a href="/play/33" target="play" title="清晨" sid="33">清晨</a></span><span class="artistName"><a href="/artist/1" title="班得瑞" target="_blank">班得瑞</a></span><span class="albumName"><a href="/album/1" title="班得瑞轻音乐精选" target="_blank">班得瑞轻音乐精选</a></span><span class="playCount">356379人听过</span><a href="/play/33" class="playBtn mr" target="play" title="播放">播放</a><aclass="playlistBtn" href="javascript:void()" onclick="addPlay(this)" title="加入列表">加入列表</a></li>
<li class="mItem"><input type="checkbox" name="checked" checked="checked" value="62"><spanclass="num">2</span><span class="title"><a href="/play/62" target="play" title="月光下的凤尾竹" sid="62">月光下的凤尾竹</a></span><span class="artistName"><a href="/artist/detail/施光南" title="施光南" target="_blank">施光南</a></span><span class="albumName"><a href="/album/13" title="中国轻音乐精选集" target="_blank">中国轻音乐精选集</a></span><span class="playCount">244700人听过</span><a href="/play/62" class="playBtn mr" target="play" title="播放">播放</a><aclass="playlistBtn" href="javascript:void()" onclick="addPlay(this)" title="加入列表">加入列表</a></li>
下一步是清洗数据,提取其中的歌曲名称和艺术家信息
正则表达式清洗数据
对爬虫文件musicSpider进行改动,改动后的代码如下:
# -*- coding: utf-8 -*-
import scrapy
import re
from mspider.items import MspiderItemclass MusicspiderSpider(scrapy.Spider):name = 'musicSpider' #爬虫识别名称allowed_domains = ['http://www.htqyy.com'] #爬取得网页范围start_urls = ['http://www.htqyy.com/top/musicList/hot?pageIndex=0&pageSize=20'] #起始urldef parse(self, response):data=response.body.decode() #获取响应内容,byte类型,解码print(data)items=[]#存放音乐信息的列表titles=re.findall(r'target="play" title="(.*?)" sid=',data)#获取所有的歌曲名artists=re.findall(r'a href="/artist.*?" title="(.*?)"',data)#获取所有艺术家for i in range(0,len(titles)):item=MspiderItem()item["title"]=titles[i]item["artist"]=artists[i]items.append(item)return items
我们想把return(返回)的列表items以json格式保存到本地
在爬虫项目文件夹mspider下打开命令行窗口,输入:scrapy crawl musicSpider -o mu.json
(scrapy crawl musicSpider -o是固定用法;mu.json是保存的文件名)
结果发现保存到本地的是这种形式
怎么办?我们新建一个python文件,利用json.load()函数将字符串转换成字典
#encoding:utf-8
import jsonwith open(r'C:\Users\Administrator\Desktop\python文件夹\爬虫学习\第七章 scrapy\7.4 入门案例\mspider\mu.json','rb') as f:data=json.load(f)
print(data)
运行该文件结果如下:
[{'title': '清晨', 'artist': '班得瑞'}, {'title': '月光下的凤尾竹', 'artist': '施光南'}, {'title': '故乡的原风景', 'artist': '宗次郎'}, {'title': '心灵雨伞', 'artist': '轻音乐'}, {'title': '荡涤心灵的天籁之音', 'artist': '古筝'}, {'title': '夜的钢琴曲五', 'artist': '石进'}, {'title': '极度放松睡眠轻音乐', 'artist': '班得瑞'}, {'title': '时间都去哪了', 'artist': '赵海洋'}, {'title': 'The Beginning', 'artist': 'Ryran·Tomson'}, {'title': '秋日私语', 'artist': '理查德'}, {'title': '你的微笑', 'artist': '班得瑞'}, {'title': '斯卡布罗市集(口哨曲)', 'artist': '轻音乐'}, {'title': '亡灵序曲', 'artist': 'Dreamtale'}, {'title': '唯美治愈系钢琴', 'artist': 'Steven Barnes'}, {'title': '牧羊曲', 'artist': '古筝'}, {'title': '寂静之声', 'artist': '班得瑞'}, {'title': '夜曲(很伤感的纯音乐)', 'artist': '神秘园'}, {'title': '月光', 'artist': '班得瑞'}, {'title': '太阳的后裔OST《Always》', 'artist': '姜创钢琴版'}, {'title': '雨的印记', 'artist': '李闰珉'}]
[Finished in 0.4s]
。
scrapy简单案例:好听轻音乐网相关推荐
- 起点小说免费看 Scrapy爬取起点小说网数据导入MongoDB数据
本文中我们将详细介绍使用Scrapy抓取数据并存入MongoDB数据库,首先给出我们需要抓取得数据: 抓取起点网得全部作品,网址为:https://www.qidian.com/all 关于Scrap ...
- python Scrapy项目 之 古诗文网案例呈现
python Scrapy项目 之 古诗文网案例呈现 文章目录 需求 1. Scrapy项目创建 2. 全局配置 settings.py 3. 爬虫程序.py 4. 数据结构 items.py 5. ...
- python爬取网易云音乐_python爬取网易云音乐简单案例
首先找到想要下载的歌曲表单,例如: 打开推荐 点击推荐的歌曲表单 接下来我们尝试爬取这个表单的全部歌曲名,及歌曲的MP3地址 我使用fiddler4抓包工具抓取相关信息 #encoding=utf8 ...
- python爬取网易云音乐简单案例
首先找到想要下载的歌曲表单,例如: 打开推荐 点击推荐的歌曲表单 接下来我们尝试爬取这个表单的全部歌曲名,及歌曲的MP3地址 我使用fiddler4抓包工具抓取相关信息 #encoding=utf8 ...
- 小白scrapy试炼-爬取慕课网免费课程
本文参考博客: scrapy爬虫-爬取慕课网全部课程 scrapy爬虫框架入门实例 准备工作: anaconda(为了简单安装scrapy) 安装scrapy的方法有好多种,原来在pip上花了挺多时间 ...
- Redis简单案例(二) 网站最近的访问用户
原文:Redis简单案例(二) 网站最近的访问用户 我们有时会在网站中看到最后的访问用户.最近的活跃用户等等诸如此类的一些信息.本文就以最后的访问用户为例, 用Redis来实现这个小功能.在这之前,我 ...
- Redis简单案例(四) Session的管理
Redis简单案例(四) Session的管理 原文:Redis简单案例(四) Session的管理 负载均衡,这应该是一个永恒的话题,也是一个十分重要的话题.毕竟当网站成长到一定程度,访问量自然也是 ...
- MAC下 Intellij IDEA GO语言插件安装及简单案例
MAC下 Intellij IDEA GO语言插件安装及简单案例 GoLang专有IDE GoLand : http://www.jetbrains.com/go/ 下载地址 Intellij IDE ...
- ThinkPHP5结合云之讯短信验证简单案例
ThinkPHP5结合云之讯短信验证简单案例 总体思路: 我这里以用户注册短信验证分析: 在用户输入正确的手机号码点击注册按钮时,使用Ajax发送一个我们手动生成的验证码和手机号码一起发 ...
最新文章
- 好玩,新版微信除了“炸屎”,还可以和她亲亲
- php之二叉树,PHP数据结构之实现链式二叉树与遍历
- music算法原理_大话FMCW雷达之区域检测原理
- linux之cut命令使用和总结
- CVPR2019,开源活体检测
- Cisco路由器上传和下载IOS
- Powershell ——findstr
- C++虚复制构造函数,设置Clone()方法返回基类指针,并设置为虚函数
- 最新达内大数据视频教程
- 如何用R语言做深度学习
- 基于verilog的uart协议实现
- CVPR 2021 | 让机器想象未见的世界!反事实的零次和开集识别
- Global.asax 文件是什么
- building workspace问题
- 平狄克微观经济学笔记和课后习题答案
- latex中的表格、图标题引用
- 通过计算机名共享文档,共享文档
- iPhone5越狱后经典插件个人推荐
- lio-sam框架:点云匹配之手写高斯牛顿下降优化求状态量更新
- 用css实现扑克牌,图片的翻转效果
热门文章
- 玩转QQ群营销、群排名、群演戏,打造自己的流量“鱼塘”
- mysql条件下触发_MySQL的( )可在一定条件下被触发、自动执行一些语句序列。_学小易找答案...
- 最新苹果开发者账号添加设备UDID​
- Matlab高频强调滤波增强,高斯高通滤波器,巴特沃斯高通滤波器图像处理
- SAP角色描述-只能在Logon语言中修改问题解决 .
- 工作一年,辞职复习半年,考杭电计算机的经验分享
- 【旧文重贴】谈谈商业分析的思维养成
- python的PyObjC库
- [CSP-S模拟测试]:chess(搜索+最短路)
- 反手套一波回文树模板加例题就很舒服