今天就先带大家爬取网易云音乐下的歌手信息并把数据保存下来。

爬取结果

环境

语言:Python

工具:Pycharm

导包

BeautifulSoup:用来解析源码,提取需要的元素。

selenium:因为歌手信息不在页面源代码里,用 selenium 自动化测试库直接获取调试页面的 Elements 元素信息。

csv:数据以 csv 形式保存下来。

程序结构

程序由三部分组成:

get_singer():获取歌手信息。

get_data():数据结构转化,方便储存。

save2csv():保存数据。

代码解析

因页面源码中没有我们需要的数据,用 requests 无法获取,这些元素在 Elements 可以看到,故我们用 selenium 自动化测试库来获取页面。requests 库和 selenium 库的区别详见上次发的文章

这篇文章带你轻松入门 python 爬虫

我用的是 Chrome 浏览器,需要把 chromedriver 放在 Python 安装目录下。具体方法上面那篇文章也讲得很详细了。browser = webdriver.Chrome()wait = WebDriverWait(browser, 5)  # 设置等待时间

提取歌手信息

子框架的问题需注意下,我们需要的元素信息不在主框架里,需要切换到子框架 g_iframe 里再操作。用 BeautifulSoup 解析元素并用选择器提取出我们需要的信息,最后以 zip 数据对应关系返回数据。

格式转换

把上面返回的数据转换为方便储存的数据,就是把列表里的数据转换为由一个个的字典组成。为了方便查看,我把它打印出来了。

代码如下

数据储存

用 with open(…) as f 保存数据,这种其实是一种简化写法,简化前写法如下try:    f = open('xxx.csv', 'r')    print(f.read())finally:    if f:        f.close()

但由于文件读写时都可能产生 IOError,为了保证无论是否出错都能正确地关闭文件,我们用 try … finally 来实现。

Python 简化了改写法,即用 with open(…) as … ,建议之后文件读写都用该写法。

还有个参数需注意,open() 里面 r 或者 a 参数,这有什么含义呢?

主要的参数如下:

r:以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。

w:打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。

a:打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。

上面我用的是 a,因为我保存数据时会不断的循环追加数据,如果用的是 w,那么每次追加数据会覆盖上一次保存的数据。

最后执行 main 函数,我只想获取热门歌手的信息,所以我把 url 中 initial 写死为 -1,当然你也可以获取全部的歌手信息,网页中是按照英文字母 A -Z排列的,对应的 initial 的值分别是 65 - 90,你可以像下面 idlist 一样写成列表,也用一个循环就可以了。

好了,今天的爬虫项目很简单,十几秒的时间已经保存了歌手姓名和歌手 id,歌手 id 数据用于下次爬虫对应歌手歌曲的歌词做准备的。自己赶紧动手试试吧。

作者:brucepk

链接:https://www.jianshu.com/p/0ceeea883847

如何利用python爬虫获取网易云音乐某个歌手简介_Python 爬虫获取网易云音乐歌手信息...相关推荐

  1. python爬虫分析模拟登录时会变的参数_Python爬虫之urllib模拟登录及cookie的那点事...

    在web  sprider crawl过程中,许多网站都需要登录后才能访问,一般如果我们不用爬虫框架的前提下,常规用的就两个库 ,urllib库和requests库,本文将用最基础的urllib库,以 ...

  2. python爬虫音乐图片的感受_python爬虫+词云图,爬取网易云音乐评论

    又到了清明时节,用python爬取了网易云音乐<清明雨上>的评论,统计词频和绘制词云图,记录过程中遇到一些问题 爬取网易云音乐的评论 一开始是按照常规思路,分析网页ajax的传参情况.看到 ...

  3. python网易云听歌时长_Python爬虫实战:爬取小姐姐最近的听歌曲目

    前言 作为网易云村的深度用户,网易云音乐应该是我除了微信外打开时间最长的 App 了.并不是应为网易云上面的歌曲多,而是因为那些走心的评论.边听歌边刷评论,感觉就像是走进了他人的人生之中,从另外一种意 ...

  4. python爬取网易云评论最多的歌_python爬取网易云音乐评论

    本文实例为大家分享了python爬取网易云音乐评论的具体代码,供大家参考,具体内容如下 import requests import bs4 import json def get_hot_comme ...

  5. 利用Python制作一个类似万能钥匙的小程序,轻松获取超高网速

    平时回家看用手机看视频.打游戏的时候,如果没有wifi是不是特别心疼自己的流量?当然了如果你有无限流量那就当我没说了哈,没有wifi但是我可以用万能钥匙破解别人的wifi呀,万能钥匙是什么?如果你的手 ...

  6. python爬虫之js链接跳转抓取_Python爬虫获取页面所有URL链接过程详解

    如何获取一个页面内所有URL链接?在Python中可以使用urllib对网页进行爬取,然后利用Beautiful Soup对爬取的页面进行解析,提取出所有的URL. 什么是Beautiful Soup ...

  7. python爬虫爬音乐格式是什么_Python爬虫练习:去爬某平台音乐

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 以下文章来源于IT共享之家 ,作者IT共享者 现在的听歌软件动不动就是各种 ...

  8. python网盘提取码怎么用_Python 一键获取百度网盘提取码

    ''' 遇到python不懂的问题,可以加Python学习交流群:1004391443一起学习交流,群文件还有零基础入门的学习资料 ''' VERSION = "VERSION 1.0.0& ...

  9. python爬虫scrapy爬取新闻标题及链接_python爬虫框架scrapy爬取梅花网资讯信息

    原标题:python爬虫框架scrapy爬取梅花网资讯信息 一.介绍 本例子用scrapy-splash爬取梅花网(http://www.meihua.info/a/list/today)的资讯信息, ...

最新文章

  1. 向当前url添加参数
  2. 《左手MongoDB右手Redis》第3章笔记-robo3t上进行增删改查
  3. 不用“背”单词,1个方法牢记7000单词:我是如何做到的?
  4. java查找链表中间元素_如何通过Java单次查找链表的中间元素
  5. #define和const的区别
  6. [html] HTML5的video怎样预加载(支持全量加载)?
  7. python统计表中单词及其出现的次数 字典形式输出_统计字符串中字母出现的次数,字典形式输出(python)...
  8. 688561,安全新代码!
  9. maya扇子动画_maya变形金刚全流程动画教学(永久有效)
  10. 【语音处理】基于matlab语音去噪频谱分析【含Matlab源码 1019期】
  11. Nachos编译与使用--Nachos配置
  12. Vue+element图片上传
  13. 用Python破解有道翻译反爬虫机制
  14. apmserv5.2.6 mysql启动失败_APMServ5.2.6win10系统Apache、MySQL5.1启动失败解决办法
  15. 完美解决html表格表头固定存在的问题
  16. 江苏科技大学苏州理工学院《计算机程序设计基础实践VC++》实验报告
  17. 资料 | 20个必不可少的Python库
  18. 工业智能网关BL110应用之26:实现三菱 PLC FX3U 接入OPC UA云平台
  19. Java对中文进行排序
  20. 四种常见的浏览器内核简介----JS城市选择控件

热门文章

  1. linux nobody 用户,Linux CentOS7安装配置tomcat8(使用非root用户/nobody用户运行)
  2. Java中映射怎么实现_我们如何在Java 9的JShell中实现映射?
  3. go string 换行_从词法分析角度聊 Go 代码组成
  4. mysql 开启不严谨模式,mysql – 为什么innodb严格模式无法启用?
  5. 那个能力很强的程序员学历造假,被辞退了!
  6. 使用 Stream API 高逼格 优化 Java 代码!
  7. 如何用 Java 实现简单的区块链
  8. 缓存穿透、缓存并发、热点缓存之最佳招式
  9. linux 占用cpu 脚本,消耗CPU资源的shell脚本
  10. 机械行业 偏计算机,院校篇丨机械类:985机械不如二本计算机?