咪咕音乐HTML代码,python3爬取咪咕音乐榜信息(附源代码)
参照上一篇爬虫小猪短租的思路https://www.cnblogs.com/aby321/p/9946831.html,继续熟悉基础爬虫方法,本次爬取的是咪咕音乐的排名
咪咕音乐榜首页http://music.migu.cn/v2/music/billboard/?_from=migu&page=1
注意:本程序有时候运行会报错,此时重新运行即可,报错原因不明了!
与小猪短租不同的是,爬取的排名信息不在每首歌曲的详细页面内,需要在分页url中获取(代码19-25行),使用打包循环并且输出给函数get_info()
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)
输出结果:每次输出data数据(字典型)字段顺序是随机的,因为本身字典型数据就没有顺序,如果想固定顺序的话请使用列表
举一反三:同类型的分页型网站均可使用此爬虫模板,例如豆瓣电影top100、时光网top榜之类的
ps:不知道这个榜单准不准,反正我基本没听过(可能是我out了)
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
咪咕音乐HTML代码,python3爬取咪咕音乐榜信息(附源代码)相关推荐
- Python2 Python3 爬取赶集网租房信息,带源码分析
*之前偶然看了某个腾讯公开课的视频,写的爬取赶集网的租房信息,这几天突然想起来,于是自己分析了一下赶集网的信息,然后自己写了一遍,写完又用用Python3重写了一遍.之中也遇见了少许的坑.记一下.算是 ...
- python爬虫爬取音乐单曲_Python爬取qq音乐的过程实例
一.前言 qq music上的音乐还是不少的,有些时候想要下载好听的音乐,但有每次在网页下载都是烦人的登录什么的.于是,来了个qqmusic的爬虫.至少我觉得for循环爬虫,最核心的应该就是找到待爬元 ...
- python爬取音乐并保存_python爬取QQ音乐歌单歌曲保存到本地,json解析
序:python强大的功能,可以爬取网上的某些信息,本次主要是通过爬歌单信息熟悉下python基础. 用到知识点: 1.python3.urllib.request.openurl 2.json (j ...
- python3爬取咪咕音乐榜信息(附源代码)
参照上一篇爬虫小猪短租的思路https://www.cnblogs.com/aby321/p/9946831.html,继续熟悉基础爬虫方法,本次爬取的是咪咕音乐的排名 咪咕音乐榜首页http://m ...
- python爬虫qq音乐教学视频_爬取QQ音乐(讲解爬虫思路)
一.问题描述: 本次爬取的对象是QQmusic,为自己后面做django音乐网站的开发获取一些资源. 二.问题分析: 由于QQmusic和网易音乐的方式差不多,都是讲歌曲信息放入到播放界面播放,在其他 ...
- python爬取音乐源码_python3爬取咪咕音乐榜信息(附源代码)
1 """ 2 典型的分页型网站--咪咕音乐榜3 有时候运行会报错,有时候正常,原因不知道4 """ 5 importrequests6 f ...
- python3 爬取猫眼电影Top100信息(正则+requests)
import json from multiprocessing.dummy import Pool import requests import redef get_one_page(url):# ...
- 几行代码爬取喜马拉雅音乐
爬取喜马拉雅音乐 工具:python3,pycharm,火狐浏览器 模块:requests,time,json 网址:https://www.ximalaya.com/yinyue/3595841/ ...
- Python3运用requests包爬取QQ音乐指定歌手歌曲
Python3应用requests包开发定向爬虫 最近学院给我们开设了Python+爬虫课程,请来了外面的公司的老师来给我们进行了为期10天的爬虫课程,实训的日子最近结束,我也有时间把我们平常写的拿来 ...
- 写一段python爬取付费音乐的代码
这里是一段爬取付费音乐的 Python 代码: import requests import json# 请求头 headers = {"User-Agent": "Mo ...
最新文章
- “32 位应用已死!”
- 堆和栈的区别 (转贴)
- uva 558 Wormholes
- 到底什么是面向对象,面试中怎么回答。面向过程和面向对象的区别是什么。java跨平台特性以及java和C++的区别。面向对象的三大特性——封装、继承和多态。面向对象的高拓展性以及低耦合度怎么体现?
- linux禁用页面拷贝粘贴,【Linux基础】VI命令模式下删除拷贝与粘贴
- 基于Xml 的IOC 容器-向容器注册
- Spring Enable*高级应用及原理
- Oracle 10g数据仓库实践pdf
- 关于芯片或者功率模块热相关计算
- 使用Smart3D进行倾斜摄影实景建模详细教程
- 如何从零开始学习Java语言
- excel文件压缩 定位条件 对象
- Frp配置——stcp及p2p模式
- 使用python爬取新浪微博的内容
- 说一说Glide.with()
- python用pandas读取excel_Python使用pandas处理Excel
- 2020年中国热成像品牌崛起,高德红外跃居全球第二
- 互联网企业数据应用BI建设全流程解读!
- Linux自动巡检脚本
- 认识消防报警联网中CAN光纤转换器的光纤接口和配套光纤线缆