目标:爬取好听轻音乐网热播排行榜的歌曲名称和艺术家信息

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简单案例:好听轻音乐网相关推荐

  1. 起点小说免费看 Scrapy爬取起点小说网数据导入MongoDB数据

    本文中我们将详细介绍使用Scrapy抓取数据并存入MongoDB数据库,首先给出我们需要抓取得数据: 抓取起点网得全部作品,网址为:https://www.qidian.com/all 关于Scrap ...

  2. python Scrapy项目 之 古诗文网案例呈现

    python Scrapy项目 之 古诗文网案例呈现 文章目录 需求 1. Scrapy项目创建 2. 全局配置 settings.py 3. 爬虫程序.py 4. 数据结构 items.py 5. ...

  3. python爬取网易云音乐_python爬取网易云音乐简单案例

    首先找到想要下载的歌曲表单,例如: 打开推荐 点击推荐的歌曲表单 接下来我们尝试爬取这个表单的全部歌曲名,及歌曲的MP3地址 我使用fiddler4抓包工具抓取相关信息 #encoding=utf8 ...

  4. python爬取网易云音乐简单案例

    首先找到想要下载的歌曲表单,例如: 打开推荐 点击推荐的歌曲表单 接下来我们尝试爬取这个表单的全部歌曲名,及歌曲的MP3地址 我使用fiddler4抓包工具抓取相关信息 #encoding=utf8 ...

  5. 小白scrapy试炼-爬取慕课网免费课程

    本文参考博客: scrapy爬虫-爬取慕课网全部课程 scrapy爬虫框架入门实例 准备工作: anaconda(为了简单安装scrapy) 安装scrapy的方法有好多种,原来在pip上花了挺多时间 ...

  6. Redis简单案例(二) 网站最近的访问用户

    原文:Redis简单案例(二) 网站最近的访问用户 我们有时会在网站中看到最后的访问用户.最近的活跃用户等等诸如此类的一些信息.本文就以最后的访问用户为例, 用Redis来实现这个小功能.在这之前,我 ...

  7. Redis简单案例(四) Session的管理

    Redis简单案例(四) Session的管理 原文:Redis简单案例(四) Session的管理 负载均衡,这应该是一个永恒的话题,也是一个十分重要的话题.毕竟当网站成长到一定程度,访问量自然也是 ...

  8. MAC下 Intellij IDEA GO语言插件安装及简单案例

    MAC下 Intellij IDEA GO语言插件安装及简单案例 GoLang专有IDE GoLand : http://www.jetbrains.com/go/ 下载地址 Intellij IDE ...

  9. ThinkPHP5结合云之讯短信验证简单案例

    ThinkPHP5结合云之讯短信验证简单案例 总体思路: 我这里以用户注册短信验证分析:        在用户输入正确的手机号码点击注册按钮时,使用Ajax发送一个我们手动生成的验证码和手机号码一起发 ...

最新文章

  1. 好玩,新版微信除了“炸屎”,还可以和她亲亲
  2. php之二叉树,PHP数据结构之实现链式二叉树与遍历
  3. music算法原理_大话FMCW雷达之区域检测原理
  4. linux之cut命令使用和总结
  5. CVPR2019,开源活体检测
  6. Cisco路由器上传和下载IOS
  7. Powershell ——findstr
  8. C++虚复制构造函数,设置Clone()方法返回基类指针,并设置为虚函数
  9. 最新达内大数据视频教程
  10. 如何用R语言做深度学习
  11. 基于verilog的uart协议实现
  12. CVPR 2021 | 让机器想象未见的世界!反事实的零次和开集识别
  13. Global.asax 文件是什么
  14. building workspace问题
  15. 平狄克微观经济学笔记和课后习题答案
  16. latex中的表格、图标题引用
  17. 通过计算机名共享文档,共享文档
  18. iPhone5越狱后经典插件个人推荐
  19. lio-sam框架:点云匹配之手写高斯牛顿下降优化求状态量更新
  20. 用css实现扑克牌,图片的翻转效果

热门文章

  1. 玩转QQ群营销、群排名、群演戏,打造自己的流量“鱼塘”
  2. mysql条件下触发_MySQL的( )可在一定条件下被触发、自动执行一些语句序列。_学小易找答案...
  3. 最新苹果开发者账号添加设备UDID​
  4. Matlab高频强调滤波增强,高斯高通滤波器,巴特沃斯高通滤波器图像处理
  5. SAP角色描述-只能在Logon语言中修改问题解决 .
  6. 工作一年,辞职复习半年,考杭电计算机的经验分享
  7. 【旧文重贴】谈谈商业分析的思维养成
  8. python的PyObjC库
  9. [CSP-S模拟测试]:chess(搜索+最短路)
  10. 反手套一波回文树模板加例题就很舒服