python爬取音乐源码_python3爬取咪咕音乐榜信息(附源代码)

本文展示了一个Python爬虫程序,用于抓取咪咕音乐榜的歌曲信息,包括歌曲排名、歌名、歌手和专辑名称。程序通过requests和BeautifulSoup库解析HTML页面,逐页获取数据,并对每个歌曲的详情页面进行二次抓取,以获取完整的歌曲详情。
摘要由CSDN通过智能技术生成

1 """

2 典型的分页型网站——咪咕音乐榜3 有时候运行会报错,有时候正常,原因不知道4 """

5 importrequests6 from bs4 importBeautifulSoup as bs7 importtime8

9 headers ={10 'User-Agent':'User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'

11 }12

13 #获取每一个歌曲的网址,参数是分页url

14 defget_link(url):15 html_data = requests.get(url, headers =headers)16 soup = bs(html_data.text, 'lxml')#bs4推荐使用的的解析库

17 #print(soup.prettify()) #标准化输出url中的源代码(有可能跟网页查看中的不一致,网页中有可能标签书写不规范)以此为基础抓取,如果抓取失败,用此命令查看源代码

18 links = soup.select('#js_songlist > div > div.song-name > span > a')#注意循环点!!!

19 ranks = soup.select('#js_songlist > div > div.song-number')#因为歌曲详情里没有排名信息,因此需要在这部分获取详情信息

20 #print(ranks)

21 for rank, link in zip(ranks,links):#打包循环,主要为了输出配套的rank和link

22 rank =rank.get_text()23 link = 'http://music.migu.cn' + link.get('href')#观察每个歌曲的详细网页发现,前面部分需要手动添加http://music.migu.cn

24 #print(rank,link)

25 get_info(rank,link)26

27 #获取每一个歌曲的详细信息,排名、歌名、歌手和专辑名,参数url是每个歌曲的网址

28 defget_info(rank,url):29 html_data = requests.get(url, headers =headers)30 soup = bs(html_data.text, 'lxml')#bs4推荐使用的的解析库

31 #print(soup.prettify()) #标准化输出url中的源代码(有可能跟网页查看中的不一致,网页中有可能标签书写不规范)以此为基础抓取,如果抓取失败,用此命令查看源代码

32 title = soup.select('div.container.pt50 > div.song-data > div.data-cont > div.song-name > span.song-name-text')[0].string.strip()33

34 #用网页copy过来的全部是“body > div.wrap.clearfix.con_bg > div.con_l > div.pho_info > h4 > em”,但是使用这个爬不出来数据(我也不知道why),把body去掉或者用下面最简短的方式(只使用最近的且唯一的div)

35 #title = soup.select('div.pho_info > h4 > em ')

36 #查询结果title格式是一维列表,需要继续提取列表元素(一般就是[0]),列表元素是前后有标签需要继续提取标签内容,使用get_text()或者string

37 singer = soup.select('div.container.pt50 > div.song-data > div.data-cont > div.song-statistic > span > a')[0].string.strip()38 cd = soup.select('div.container.pt50 > div.song-data > div.data-cont > div.style-like > div > span > a')[0].string.strip() #获取标签的属性值

39

40 #将详细数据整理成字典格式

41 data ={42 '排名':rank,43 '歌名':title,44 '歌手':singer,45 '专辑':cd46 }47 print(data)48

49

50 #程序主入口

51 if __name__=='__main__':52 for number in range(1,3):53 url = 'http://music.migu.cn/v2/music/billboard/?_from=migu&page={}'.format(number) #构造分页url(不是歌曲详情的url)

54 get_link(url)55 time.sleep(1)

使用请求登录某些网站的API 文件资料 中文 英文 支持网站 网站 PC模式 移动模式 ScanQR模式 中文 Weibo ✓ ✓ ✓ 新浪微博 Douban ✓ ✗ ✗ 豆瓣 Github ✓ ✗ ✗ Github Music163 ✓ ✗ ✗ 网易云音乐 Zt12306 ✓ ✗ ✗ 中国铁路12306 QQZone ✗ ✗ ✓ QQ空间 QQQun ✗ ✗ ✓ QQ群 QQId ✗ ✗ ✓ 我的QQ中心 Zhihu ✗ ✗ ✓ 知乎 Bilibili ✓ ✓ ✗ B站 Toutiao ✗ ✗ ✗ 今日头条 Taobao ✗ ✗ ✓ 淘宝 Jingdong ✗ ✗ ✓ 京东 Ifeng ✓ ✗ ✗ 凤凰网 Sohu ✗ ✓ ✗ 搜狐 Zgconline ✓ ✗ ✗ 中关村在线 Lagou ✗ ✗ ✗ 拉勾网 Twitter ✗ ✓ ✗ 推特 Vultr ✓ ✗ ✗ Vultr eSurfing ✓ ✗ ✗ 天翼 Renren ✓ ✗ ✗ 人人网 W3Cschool ✓ ✗ ✗ W3Cschool(编程狮) Fishc ✓ ✗ ✗ 鱼C论坛 Youdao ✓ ✗ ✗ 有道 Baidupan ✓ ✗ ✗ 百度网盘 Stackoverflow ✓ ✗ ✗ Stackoverflow CodaLab ✓ ✗ ✗ CodaLab PyPi ✓ ✗ ✗ PyPi Xiami ✓ ✗ ✗ 虾米音乐 Douyu ✗ ✗ ✓ 斗鱼直播 Migu ✓ ✗ ✗ 咪咕音乐 Qunar ✓ ✗ ✗ 去哪儿旅行 Mieshop ✓ ✗ ✗ 小米商城 Mpweixin ✓ ✗ ✗ 微信公众号 Baidutieba ✗ ✗ ✓ 百度贴吧 Dazhongdianping ✗ ✗ ✓ 大众点评 Jianguoyun ✓ ✗ ✗ 坚果云 Cloud189 ✓ ✗ ✗ 天翼云盘 QQMusic ✗ ✗ ✓ QQ音乐 Ximalaya ✗ ✗ ✓ 喜马拉雅 使用DecryptLogin的一些情况 名称 介绍 代码 中文 weiboMonitor click click 微博监控 QQReport click click 生成QQ个人专属报告 bilibiliDownloadUserVideos click click 下载B站指定UP主的所有视频 NeteaseSongListDownloader click click 网易云个人歌单下载器 NeteaseListenLeaderboard click click 网易云个人听歌排行榜 userWeiboSpider click click 下载指定微博用户的所有微博数据 NeteaseSignin click click 网易云音乐自动签到 weiboEmoji click click 微博表情包爬取 weiboSender click click 大吼一声发微博 tbgoods click click 淘宝商品数据小爬虫 jdgoods click click 京东商品数据小爬虫 delallweibos click click 批量删除微博 ClearQzone click click 批量删除QQ空间说说 NeteaseEveryday click click 在终端看网易云每日歌曲推荐 NeteaseClickPlaylist click click 网易云音乐刷歌曲播放量 安装 pip安装 run "pip install DecryptLogin" 源代码安装 (1)离线 第一步:git clone https://github.com/CharlesPikachu/DecryptLogin.git 第二步:cd DecryptLogin->run “ python setup.py install” (2)在线 run “ pip install git + https://github.com/CharlesPikachu/DecryptLogin.git@master” 快速开始 from DecryptLogin import login lg = login.Login() infos_return, session = lg.douban(username[telephone], password) infos_return, session = lg.github(username[email], password) infos_return, session = lg.weibo() infos_return, session = lg.music163(username[telephone/email], password) infos_return, session
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值