python爬虫爬音乐-Python爬虫学习教程,爬取网易云音乐!

运行环境

我的运行环境如下:

系统版本

Windows10。

Python版本

Python3.5,推荐使用Anaconda 这个科学计算版本,主要是因为它自带一个包管理工具,可以解决有些包安装错误的问题。去Anaconda官网,选择Python3.5版本,然后下载安装。

IDE

我使用的是PyCharm,是专门为Python开发的IDE。这是JetBrians的产品

实战

上面提到过,网易云音乐的网页跟普通的网页相比主要有两点不同:

网页是 js 动态加载的

使用了iframe框架

所以,

首先,网页请求不能使用requests库,需要使用Selenium + PhatomJS。

其次,使用Selenium + PhatomJS后,还需要针对 iframe 做特定处理。

废话不多说,看实际操作步骤:

在右上角的搜索框中输入“The Beatles”,然后会有一个下拉选项,选择歌手 The Beatles (红框中的内容)。

然后看到如下页面,选择红框中的“所有专辑”,点击。

这样就会看见所有的专辑列表,以及下方的翻页按钮。

我们需要的就是所有专辑的图片、专辑名和专辑出版时间。看到这就可以构想一下爬虫的爬取逻辑了。定位到该页面,然后获取页码,然后挨个请求页面来爬取页面中的内容。

点击一下翻页按钮看看url 有没有什么规律。

点击第二页后,看到上面的地址栏!!!看到这个地址栏我都懒得翻页了。。。

limit 参数是限制一个页面加载专辑的个数

offset 参数是前面过滤多少个专辑,现在是一页12个专辑,所以第二页是offset=12,第三页offset=24,以此类推。。。

一共9页,一页12个,也不到120个。So... ... 改一下url 就不用翻页了!!

limit 参数等于120,offset 参数 等于0,就搞定了!输入下面的url,看看是不是所有的专辑都加载出来了。

下面就开始爬虫代码了。

这里我们会用到上一篇博文中写好的几个工具方法:

OK, 开始我们的爬虫逻辑部分:

这里值得注意的是,该页面使用frame 框架,使用Selenium + PhantomJS 后并不会加载iframe 框架中的网页内容。iframe 框架相当于在页面中又加载了一个页面,需要使用Selenium 的 switch_to.frame() 方法加载(官网给的方法是switch_to_frame(),但是IDE提醒使用前面的方法替代该方法)。

看下面的网页结构,iframe的id是“g_iframe”:

加载 iframe 框架中的内容:

然后找到所有的封面元素:

根据上图的网页结构可以看出,所有的专辑信息都在ul 标签里面,每一个专辑在一个li 标签里。li 标签中包含了图片url、专辑名字、以及专辑时间。

抓取其中的内容就好了。

这里获取到的图片url 依然是有图片宽高参数的,所以要过滤宽高参数:

把问号后面的参数过滤掉:

图片命名逻辑:专辑时间 + 专辑名。

专辑名可能有一些特殊字符,需要替换掉!

photo_name = album_date + " - " + album_name.replace("/","").replace(":",",") + ".jpg"

再使用上一篇博文例子中的去重逻辑,修改后的爬虫逻辑部分如下:

其实相对于上篇博文的例子,这个爬虫的逻辑部分还是挺简洁的。

执行结果:

看看文件夹里面什么样:

如果你也想入门高薪Python人工智能行业,欢迎你来到达内学习。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值