版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖南商务职业技术学院毕业设计
目录
1引言............................................................................................................................1
1.1项目背景......................................................................................................1
1.2开发环境与工具..........................................................................................2
1.2.1Python简介..........................................................................................2
1.2.2MySQL简介............................................................................................3
1.2.3JupyterNotebook简介......................................................................3
1.2.4PyCharm简介........................................................................................4
2需求分析....................................................................................................................5
2.1可行性需求分析..........................................................................................5
2.2采集目标功能分析......................................................................................6
2.3关键技术分析..............................................................................................6
2.3.1网络爬虫技术.......................................................................................6
2.3.2文件存取技术.......................................................................................8
2.3.3可视化技术...........................................................................................9
3数据采集..................................................................................................................10
3.1采集页面分析............................................................................................10
3.2字段分析....................................................................................................15
3.3编程实现....................................................................................................16
4数据清洗与处理......................................................................................................18
4.1数据清洗....................................................................................................18
4.2数据储存....................................................................................................21
4.3编程实现....................................................................................................22
5数据统计与分析......................................................................................................23
5.1数据准备....................................................................................................23
5.2数据展示....................................................................................................25
5.2.1依据专辑进行统计.............................................................................25
5.2.2依据标签类型进行统计.....................................................................26
I
湖南商务职业技术学院毕业设计
5.2.3根据歌手上榜的歌曲量统计和分析.................................................27
5.3综述............................................................................................................28
6小结..........................................................................................................................29
参考资料.........................................................................................................................30
II
湖南商务职业技术学院毕业设计
基于Python的咪咕音乐网站数据采集与分析
1引言
在当今时代背景下,大数据与人工智能等计算机互联网技术在为百姓民生
的各个方面提供了智能生活的技术基础。
衣食住行、吃喝玩乐等方面产生的海量数据等待开发的价值愈来愈大,而
当今这代人正处于这数据时代的狂潮中,抓住其中的机遇,便有飞黄腾达的机
会。
音乐领域产生的数据价值同样具备如此,它作为一种文化艺术形式,在全
球范围内一直在不断发展和演变。全球化和跨文化交流的增加,使得音乐风格
越来越多样化和包容性。人们对不同文化、民族和性别的音乐越来越包容和欣
赏,这也使得更多的音乐类型和艺术家能够脱颖而出。
随着数字技术的发展,音乐的传播和消费方式也发生了巨大的变化。流媒
体服务的兴起使得音乐更加方便和易于获取,同时也使得音乐产业的商业模式
发生了变化。音乐和其他艺术形式的跨领域合作越来越普遍。比如,音乐和电
影、游戏、时尚等领域的结合,创造出了更加丰富和有趣的作品。
总的来说,音乐发展的现状和趋势是多样性、数字化、跨界合作、可持续
发展和社交媒体化。随着技术的不断发展和人们对音乐的需求不断变化,音乐
产业也将继续不断创新和发展。因此,音乐领域所产生的数据价值也越来越不
可忽视。
1.1项目背景
随着网络技术的进步,人们不仅能够通过网络学习,还能够享受各种附带
产品的好处,诸如网络音乐和游戏和小说等等。
越来越多的人选择在网上听音乐、下载音乐。因此,了解音乐的流行程度
和市场趋势就变得尤为重要。对于一家音乐公司而言,需要将音乐网站中产生
的数据价值挖掘出来,为公司的发展带来更多的利益空间。那么,就需要对自
己运营的音乐网站爬取统计出有用的信息,而爬取音乐排行榜网站数据是数据
挖掘技术在实际中的应用。
因此,在这样一个背景下,爬取音乐排行榜网站数据并做出分析对于用户
和企业都有巨大的价值。它可以帮助用户快速得到最新、最热门的歌曲信息,
1
湖南商务职业技术学院毕业设计
并且基于数据分析和推荐算法来为用户提供针对性和个性化的推荐服务。对于
商业公司而言,也能够通过对用户口味和偏好进行深入分析,为公司提供更加
精细化的市场调研和宣传方案。
爬取音乐排行榜网站数据还可以具有学术研究价值。比如可以研究某段时
间内不同地区或群体喜欢哪些类型、风格、歌手的音乐,从中发现一些文化现
象并进行深入思考。
本次毕业设计就是获取咪咕音乐网站的音乐排行榜中的歌曲信息,以下是
爬取歌曲信息并对数据进行处理和可视化的操作步骤。
首先对大型咪咕音乐网站排行榜的网页源代码进行网页解析,然后爬取歌
曲的网址后,再对歌曲地址进行一次网页解析后获取详细的歌曲信息。接下来,
将爬取得到的歌曲数据进行数据清洗和分析,保证数据的完整性和准确性。最
后再采取可视化技术将处理后的数据用图表的形式展示,得到相应的数据信息
结论。
1.2开发环境与工具
1.2.1Python简介
Python是由荷兰数学家和计算机科学研究学会的吉多·范罗苏姆在20世
纪90年代初设计开发的一种解释型编程语言。
Python语言最大的特点就是简单,语法简洁明了,初学者也容易掌握。相
较于其他编程语言,Python实现同一功能的代码通常最短,而且Python的第三
方库足够丰富、免费开源、支持跨多平台且可移植性强。
Python可以用于编写网络爬虫,从而可以爬取咪咕音乐网站排行榜的歌单
数据信息。具体地说,可以使用Python中的第三方库(例如requests、re、etree
等)来模拟浏览器请求数据,然后解析HTML或XML文件,提取出排行榜相关的
信息。
以咪咕音乐排行榜网站为例,可以使用requests、正则表达式和Xpath库
向网页发送请求并解析HTML内容,在解析过程中筛选出有用的信息,如歌单网
址、歌曲名称、歌手、歌曲专辑等等。通过分析网页源代码,可以发现音乐排
行榜数据存储在特定的URL上,因此只需要构造相应的URL并发送请求即可获
取大量排行榜数据。
总的来说,Python作为一种通用编程语言,在网络爬虫领域有着广泛的应
用。利用Python网络爬虫具有高效、便捷和灵活性强等优点,还能支持多种数
2
湖南商务职业技术学院毕业设计
据存储格式(如文本文件、数据库等)。
同时,Python还包含大量的第三方库,以下是本次毕业设计所涉及到的相
关库介绍。
(1).Requests:HTTP协议访问及网络爬虫库,比urllib使用更简洁。
(2).Re:正则表达式解析和处理功能库,里面包含了多种字符串匹配的方
法。
(3).Csv:csv属于python中的内置模块,它能够读取csv格式的文件或者
将数据存入到csv表格中,也能读取txt格式文件或者将数据存入到txt表格
中。
(4).NumPy:处理数据类型相同的多维数组库,NumPy库的数据结构比
Python自带的更加高效。
(5).Pandas:基于NumPy的Python数据分析高层次应用库。提供了易用的
数据结构和数据分析工具,操作索引即操作数据。
(6).Matplotlib:绘图库,主要是偏向于二维绘图包括折线图、条形图、
扇形图、散点图、直方图等等。
1.2.2MySQL简介
MySQL是一款由瑞典MySQLAB公司研发的关系型数据库管理系统,现属于
Oracle旗下产品,标志为海豚,象征其读写速度快、准确无误。
相较于储存所有数据于同一仓库内,MySQL采用关系型储存方式,将数据分
散至不同表中,提高了速度和灵活性。其安全、高效且与多款主流计算机语言
高度兼容,是当前最受欢迎的关系型数据库管理系统之一。除此之外,其开放
源码的特点也使得中小型和大型网站广泛采用。
MySQL可以用来存储和处理大量的结构化数据,而本次毕业设计爬取的咪咕
音乐网站排行榜歌曲数据就是大量的结构化数据,所以这也是选择它作为数据
存储的理由。
MySQL除了存储功能,还可以用于查询、更新和删除数据等操作。因此,可
以通过SQL语句将存储到MySQL数据库的歌单数据进行高效、灵活和精确的查
询和分析,从而快速了解用户需求和流行趋势,并做出相应的决策。
1.2.3JupyterNotebook简介
JupyterNotebook是一款兼容性强的基于Web的开源应用软件,它的文本
和代码编辑功能非常强大且交互性良好。无论是进行数据分析还是逻辑整理,
3
湖南商务职业技术学院毕业设计
使用JupyterNotebook都能事半功倍。它不仅支持Python,还支持其他40多
种编程语言,并继承了IPython的所有优点。
正是因为这些特性,让JupyterNotebook在机械学习,数据清洗、数据分
析、数据挖掘等领域得到众多程序员的喜爱。对于初学者来说安装Jupyter
Notebook的方法就是安装Anaconda。因为Anaconda是免费的,可以轻松地完
成该软件的下载和安装。
JupyterNotebook具备交互式计算环境,它可以让用户在浏览器中编写、
运行和共享代码。使用JupyterNotebook对爬取音乐网站排行榜的数据进行数
据清洗主要具备以下优势。
(1).JupyterNotebook支持Python语言,而Python是一种流行的网络爬
虫和数据处理语言。可以在JupyterNotebook中使用Python进行音乐排行榜数
据的网页抓取、数据清洗、分析和可视化等操作。
(2).JupyterNotebook还支持Markdown语法,可以直接在Notebook中添
加富文本内容、公式、链接等元素。这些功能可以帮助你更好地记录和分享代
码思路、实验结果和心得体会。
综上所述,JupyterNotebook通过结合Python语言和丰富的插件库,可以
高效地实现对咪咕音乐排行榜歌曲数据的数据清洗以及简单方便的数据准备。
1.2.4PyCharm简介
PyCharm是一款Python集成开发环境,在当下非常流行。它具有良好的编
码、调试、版本控制和测试工具,可以帮助程序员更方便地编写优秀的Python
代码。而对于爬虫爬取咪咕音乐排行榜的歌曲数据信息来说,PyCharm也可以提
供许多便利。
首先,PyCharm集成了强大的Python调试器。在爬虫的开发过程中,会遇
到许多错误,例如请求超时、页面解析错误等。这时,可以使用PyCharm的调
试工具手动调试代码,定位问题并修复。调试工具可以其逐行执行代码,并监
视变量和引用。这可以大大提高代码调试的效率和准确性。
其次,PyCharm同样提供了出色的编码实用工具。爬虫编码通常会包含大量
字符串操作、正则表达式处理和编码转换。PyCharm内置了很多实用的插件,可
以使这些操作更加简单和高效。例如,它可以自动补全变量名和方法名称,高
亮语法错误和代码警告,快速跳转到变量定义和查看文档,以及执行快捷键自
动生成代码。这些功能可以让程序员更加专注于开发和调试自己的代码,而不
必担心代码中不必要的错误和繁琐的细节。
4
湖南商务职业技术学院毕业设计
最后,PyCharm在测试方面也提供了很大的支持。任何程序都需要经过完整
和准确的测试,以保证其在生产环境中能够正常运行。PyCharm可以为其生成测
试框架和测试报告,并支持持续集成和测试,提高代码的完整性和准确性。
本次毕业设计主要依靠PyCharm开发工具完成对咪咕音乐排行榜数据的爬
取,存储实现和可视化功能。
在爬取咪咕音乐排行榜歌曲相关数据信息时,用PyCharm可以更加轻松、
快捷地开发出高效的爬虫程序,并在保证程序稳定运行的前提下,不断地迭代
和更新爬虫业务逻辑。
总的来说,PyCharm提供的强大的编码、调试和测试工具使其成为爬虫开发
的理想工具。其内置的各种实用插件可以大大提高代码开发的效率和准确性。
2需求分析
2.1可行性需求分析
(1).政策可行性
首先需确认,是否有可以合法获取数据的渠道和方式。需要了解音乐网站
的相关规定和政策,是否允许第三方爬取其数据。总之,要在合法的条件下,
爬取可行的音乐网站排行榜数据。
(2).技术可行性
本次毕业设计中将使用Python语言来实现数据获取,数据清洗,数据可视
化等操作。在数据获取的过程中遇到一些问题,通过抓包分析发现咪咕音乐网
站歌单信息页面的数据是动态传输的,所以通过浏览器控制台可以获取请求和
其参数。得到网页面数据的返回值。
然后将获取的原始数据储存到txt文件,以便在后续的数据预处理和可视
化中再进行调用。最后再将处理过后的数据存入MySQL数据库中做持久化储存。
以上为此次毕业设计的技术可行性,在后续的工作中会将所有的步骤实现
到位,并保证数据的准确性和安全性。
(3).需求可行性
优美动听的音乐可以放松人的心情,是人们在苦燥烦闷时极佳的“调味
剂”。有时,有音乐的陪伴,会温暖消冷的心神。
本次毕业设计通过爬取咪咕音乐排行榜的数据,来分析当日排行榜上的歌
曲信息。然后从歌手、标签、专辑等方面对其进行深度剖析,分析出有价值的
信息,最后通过数据可视化得出结论。
5
湖南商务职业技术学院毕业设计
(4).数据可行性
在获取到所需数据后,需要对这些数据进行清洗、处理、统计等分析工作。
因此,在开始之前需要确定所要收集的数据类型与数量,并明确使用何种方法
来对数据进行处理以满足毕业设计指标要求。
2.2采集目标功能分析
本次毕业设计的数据集来源为咪咕音乐排行榜网站,通过Python爬取咪咕
音乐所有排行榜上歌曲的信息。所选择的音乐排行榜榜单分别有新歌榜,热歌
榜,原创榜,影视榜,内地榜,港台榜,欧美榜,日韩榜,KTV榜,网络榜和彩
铃榜。获取的目标数据分别是歌单排名,歌曲名称,演唱者,作词者,作曲者,
所属专辑以及音乐标签。
对获取的数据进行去重、过滤无效信息,格式转换等操作,生成规范化的
数据表格。数据清洗后共860条记录,爬取完成后尽可能的去检查数据的准确
性,确保爬取的数据无误并且是属于咪咕音乐实时存在的排行榜歌曲信息。
将获取到并处理后的数据保存到MySQL数据库中,在后续进行分析时可以
随时调用使用。将采集到的数据通过柱形图、折线图表形式展示,方便用户查
看和理解相应的音乐歌曲信息。
最后对数据表进行多个维度的分析后详细的阐述。例如,从各歌曲的标签
对其进行分析,查看排行榜中跟音乐最紧密相关的标签。也可以通过获取歌手
的歌曲冲上排行榜的总数,分析出当日受欢迎的歌手有哪些。
2.3关键技术分析
2.3.1网络爬虫技术
网络爬虫是指通过程序自动抓取互联网上的信息的技术,而爬取音乐网站
排行榜数据正是网络爬虫技术的一种应用。在这个场景下,网络爬虫可以自动
从目标音乐网站上获取所需数据,然后进行清洗和处理,最终生成规范化的数
据表格。因此,可以说网络爬虫是实现爬取音乐网站排行榜数据的关键技术之
一。
爬取音乐排行榜数据需要使用一种特定的爬虫技术,以适应音乐网站的结
构和数据格式,常见的包括:
(1).正则表达式:使用正则表达式的模式匹配,可以更准确地从网页源代
码中提取所需的数据。
6
湖南商务职业技术学院毕业设计
(2).Xpath:使用XPath语言可以解析网页中的HTML元素,并定位到所需
的数据。它是一种非常灵活的解析方法,可以在网页结构变化时动态适应。
(3).BeautifulSoup:这是Python的一个HTML解析库,可以让开发者能够
快速、方便地从网页中找到所需的数据。
(4).Scrapy:这是Python的一个高级网络爬虫框架,它可以处理大规模的
网页数据爬取,并支持分布式爬虫的部署。除了以上技术外,还需要一些数据
持久化技术,例如将爬取的数据存储到数据库中,以便于后续处理和分析。
本次毕业设计选取的爬虫技术为正则表达式和Xpath,以下是对它们的详细
阐述以及对应的实现代码。
(1).正则表达式
正则表达式可以对字符、字符串、数字等不同数据类型进行匹配,具有很
强的灵活性,而且引擎的实现方式精简高效,可以快速地处理大量的数据,并
且预定义为一个模板,以后可以直接调用,实现代码的重用。除了单个字符匹
配之外,正则表达式还可以用于处理字符集合,比如匹配一个含有某些字符的
字符串、匹配邮箱地址等。
本次编程利用正则表达式完成歌单地址ID值的获取。先通过正则表达式的
research方法先将爬取的网页源代码截取到存放歌单地址ID值的<script>标
签,缩减源代码范围,确保正则表达式的findall方法能准确筛选出想要的歌
曲id值,最后再将歌曲id值与网址拼接成歌曲网址后存储到歌曲网址列表返
回,正则表达式的实现代码如下。
#获取歌曲地址
defget_music_urls(url):
data=requests.get(url,headers=headers).text
#在源代码中找到歌曲id的标签
copyrightId_temp=re.search(r'<script>.*?varlistData=(.*?)</script>',data,
re.DOTALL).group(1)
#爬取每个歌曲的id
copyrightId=re.findall(r'".*?.jpg","copyrightId":"(.*?)","duration"',copyrightId_temp)
music_urls=['/v3/music/song/{}'.format(i)foriincopyrightId]
returnmusic_urls
(2).Xpath
XPath是与HTML、XML完美兼容的语言,用于解析XML及HTML文档非常方
便,可以直接从属性或元素中提取所需内容而无需分析整个文档结构。而且结
7
湖南商务职业技术学院毕业设计
构清晰简单,易于编写和学习,精通XPath语言可以很快地提高数据抓取速度。
可以实现各种复杂的数据提取操作,避免错误和无用内容。
本次编程利用Xpath完成目标数据的收集。先将爬取的源代码转换为标准
的html格式,然后通过xpath方法在html格式的源代码中依次获取歌名、歌
手、作词者、作曲者、专辑和音乐标签的信息,并把它们存储到音乐信息列表
后返回,Xpath的实现代码如下。
#获取歌曲信息
defget_music_info():
foriinrange(len(music_urls)):
data=requests.get(music_urls[i],headers=headers).text
html=etree.HTML(data)
rank=str(i+1)#排名
name=html.xpath('/html/body/div[2]/div[2]/div[2]/h2/text()')[0]#歌名
singer=html.xpath('/html/body/div[2]/div[2]/div[2]/div[1]/a/text()')[0]#歌手
lyricist=
html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[1]/span/text()')[0].replace('作词:','')#作
词
composer=
html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[2]/span/text()')[0].replace('作曲:','')#作
曲
album=html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[3]/span/a/text()')[0]#专
辑
label=html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[4]/span/span[1]/text()')[0]
#标签
#将所有数据保存到列表中
music_info.append([rank,name,singer,lyricist,composer,album,label])
2.3.2文件存取技术
网络爬虫的txt文件存储技术是指将爬取的数据存储在文本文件中,使用
文本文件存储方式具有以下优点:
(1).简单易用:文本文件格式简单,存储和读取都非常方便,不需要专门
的数据库管理技术。
(2).高效性:由于文本文件不需要额外的程序或库支持,因此在处理小型
数据时能够获得较高的读取和写入速度。
(3).兼容性:文本文件是常见的数据格式,可以在不同的操作系统、软件平
台和程序中读取和使用。
(4).便于共享:爬虫数据存储在文本文件中,便于共享和传输。
8
湖南商务职业技术学院毕业设计
(5).易于维护和备份:文本文件的结构简单,易于备份,可以手工编辑和
修改,使数据的维护和管理更加方便。
本次毕业设计存储咪咕音乐排行榜歌单数据所采用的文件存储技术就是利
用txt文件存储技术。在Python代码中,以追加的方式打开一个文件,然后遍
历已经获取的榜单数据信息,利用换行和制表符将其以合适的格式存储下来,
txt存储的实现代码如下。
#将获取到的数据添加到文件中
defput_info_to_txt(txt_name):
withopen(txt_name,'w+',encoding='utf-8')asf1:
foriinmusic_info:
forjini:
ifj==i[-1]:
f1.write(j+'\n')
else:
f1.write(j+'\t')
2.3.3可视化技术
可视化技术(VisualizationTechnology)是指运用图形化手段将数据、
信息等抽象概念通过可视化方式展现出来的技术。它将数据、信息转换成直观、
易于理解和掌握的图形,让人们可以通过直观感受来获取深层次的数据信息,
从而更好地发现数据中隐藏的规律和趋势。
可视化技术可以将爬取到的音乐排行榜歌单数据通过各种图表、地图、动
态图等形式来展示,进行可视化呈现,从而更直观、生动、形象地展示音乐排
行榜中歌手,专辑和歌曲标签等多个方面的信息。
本次毕业设计使用pycharm工具,实现对排行榜歌单数据的可视化技术。
其中,用pandas库读取存储在txt文件的歌单数据,用matplotlib库和
pycharts库将爬取的数据进行图表可视化展示。
选择的展示图表分别是词云图、饼图和柱状图,以下是对这些图表功能特
点的介绍,这也是为什么要展现为这几种图的原因。
(1).词云图
词云图是一种基于文字的可视化技术,它将文本信息通过颜色、字体大小、
重心标示等视觉手段展现出来,从而更加直观地呈现出关键字的出现频率、重
要程度和相关度等信息。
9
湖南商务职业技术学院毕业设计
词云图直观而易于理解,不需要专业的统计知识,可以快速地将文字数据
变为视觉化的信息,加速了对数据的分析过程。而且有多种形式可以选择,如
基于形状的词云图、基于位置的词云图、基于颜色的词云图等。可以根据不同
的数据类型和展示目标进行调整,提高了可视化的灵活性。
同时也能够更加有效地传递信息,而且传递的信息准确性和精度较高,具
有较高的可靠性。词云图还能够展示单词之间的相关性,使得用户可以深入的
理解数据背后的信息。
(2).饼图
饼图是一种基于数据的可视化技术,将数据分割为几块“饼状”区域,并
用不同的颜色或其他可视化方式来区分每个部分的大小或重要程度。
饼图易于理解和使用,而且不需要专业的统计和计算知识。饼图可以非常
清楚地显示不同部分的比例及其在整体中的占比情况,使得人们可直观感受到
每个部分在整体中的重要性。可以通过多种色彩、图案等方式来区分不同部分,
使图表显示的信息更具吸引力。可以用于比较个体与总体的比例,比较不同时
间段或不同地区的数据差异,有助于更快速准确地观察和分析数据。
(3).柱状图
柱状图是一种基于数据的可视化技术,通过使用柱形展示每个数据的大小、
高度或长度。
柱状图可以帮助人们更直观地理解数据,尤其是对于非常大的数据集而言。
可以显示不同组数据的差异。柱状图也可以通过交互来帮助用户更深入地探索
数据。例如,用户可以通过鼠标悬停在某个柱子上来获得详细信息。
比如,可以使用折线图或柱状图展示不同歌曲或不同曲风的排名变化,使
用地图可以展示不同地域的音乐受众分布,使用动态图可以展示不同时间段内
的音乐排行榜变化趋势。
除此之外,可视化技术还可以让数据更加生动、具体,有助于人们更好地
理解、分析和处理数据,更快速、全面地获取数据背后的规律和趋势。因此,
在爬取咪咕音乐排行榜数据时,将抓取到的数据进行可视化呈现,将非常有益
于数据的分析和应用。
3数据采集
3.1采集页面分析
首先通过谷歌浏览器搜索咪咕音乐的官方网页,进入官网后找到并切换到
10
湖南商务职业技术学院毕业设计
音乐榜单,从这获取咪咕尖叫榜和咪咕特色榜下拉栏的所有音乐排行榜网址,示
例图如图3-1。
图3-1咪咕音乐排行榜榜单图
然后,选取尖叫新歌榜进行进行页面分析,尖叫新歌榜的URL为:
/v3/music/top/jianjiao_hotsong。点击页面下方的分
页按钮,同时观察URL,发现URL没有变化,示例图如图3-2,3-3。
图3-2尖叫新歌榜第1页图
11
湖南商务职业技术学院毕业设计
图3-3尖叫新歌榜第2页图
按F12调出开发者工具,选择浏览器控制台的Network面板,然后刷新页
面,当请求页面刷新出尖叫新歌榜的请求信息时,选择该请求信息,将标签定
位到Headers标头,分析尖叫新歌榜的请求信息,如图3-4。
图3-4开发者工具图
通过分析,得到该网址的请求方式是get请求。将浏览器控制台切换到
Console面板,准备分析网页是静态网页还是动态网页。
在命令行中输入“alert(document.lastModified);”,弹出窗口会记录时
间,随着多次刷新页面,如果时间也会不断变化的话,则证明该网页是动态网
12
湖南商务职业技术学院毕业设计
页,示例图如图3-5,3-6。
图3-5网站弹出时间1图
图3-6网站弹出时间2图
为了进一步爬取动态网页数据,先选择点开几个歌曲,分析他们的网址,
经对比发现他们只有最后一个路径有偏差,示例图如图3-7,3-8。
13
湖南商务职业技术学院毕业设计
图3-7歌单网址1图
图3-8歌单网址2图
根据经验推测,该值应该是歌单的网址路径ID值。经网页爬取排查发现,
只有网页源代码<scripts>标签下面所有歌曲的路径ID值是可获取到的,示例
图如图3-9,3-10。验证推测后,通过这种方式爬取所有歌单地址。
14
湖南商务职业技术学院毕业设计
图3-9网页源代码的歌曲ID值图
图3-10经爬取验证的歌曲ID值图
总的来说,在对咪咕音乐排行榜的网站进行页面分析时,也遇到了不少难
题,比如爬虫知识储备的缺漏,不知道如何分辨网页动态与静态,在确认歌曲
的路径ID时,寻找那个ID值才是所需要的。不过,最终所有的难题都通过查
询大量的参考资料得到了有效的解决。
3.2字段分析
进入咪咕音乐尖叫新歌榜的其中一个歌单网址,按F12调出开发者工具,
选择浏览器控制台的Element面板,通过资源定位符,找到歌单信息集中的位
15
湖南商务职业技术学院毕业设计
置,然后分析信息字段爬取的方式,示例图如图3-11。
图3-11歌曲字段信息图
咪咕音乐排行榜的歌曲字段分析相对简单,没有什么问题,只要确认好歌
单信息的源代码解析方式就行。
3.3编程实现
对网站进行采集页面和页面字段等细节的分析后,准备实现编程需求,完
成数据采集功能。首先导入爬取网站所需要的库,为爬取网站提供相应方法。
#导入库
importrequests
fromlxmlimportetree
importre
然后设置请求头,模拟浏览器访问网站。
#设置请求头
headers={
'User-Agent':'User-Agent:Mozilla/5.0(WindowsNT6.1)AppleWebKit/537.36(KHTML,
likeGecko)Chrome/63.0.3239.132Safari/537.36'
}
配置好爬虫的环境后,实现数据采集需求,完成咪咕音乐各榜单的歌单信
息爬取,详细操作代码如下。
importrequests
fromlxmlimportetree
16
湖南商务职业技术学院毕业设计
importre
headers={
'User-Agent':'User-Agent:Mozilla/5.0(WindowsNT6.1)AppleWebKit/537.36(KHTML,
likeGecko)Chrome/63.0.3239.132Safari/537.36'
}
#各榜单网页url
li1=['jianjiao_newsong','jianjiao_hotsong','jianjiao_original','movies','mainland','hktw',
'eur_usa','jpn_kor','coloring','ktv','network']
bangdang_urls=['/v3/music/top/{}'.format(i)foriinli1]
li2=['新歌榜','热歌榜','原创榜','影视榜','内地榜','港台榜','欧美榜','日韩榜','彩铃
榜','KTV榜','网络榜']
txt_name=['{}数据.txt'.format(i)foriinli2]
#获取歌曲地址
defget_music_urls(url):
data=requests.get(url,headers=headers).text
#在源代码中找到歌曲id的标签
copyrightId_temp=re.search(r'<script>.*?varlistData=(.*?)</script>',data,
re.DOTALL).group(1)
#爬取每个歌曲的id
copyrightId=re.findall(r'".*?.jpg","copyrightId":"(.*?)","duration"',copyrightId_temp)
music_urls=['/v3/music/song/{}'.format(i)foriincopyrightId]
returnmusic_urls
#获取歌曲信息
defget_music_info():
foriinrange(len(music_urls)):
data=requests.get(music_urls[i],headers=headers).text
html=etree.HTML(data)
rank=str(i+1)#排名
name=html.xpath('/html/body/div[2]/div[2]/div[2]/h2/text()')[0]#歌名
singer=html.xpath('/html/body/div[2]/div[2]/div[2]/div[1]/a/text()')[0]#歌手
lyricist=
html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[1]/span/text()')[0].replace('作词:','')#
作词
composer=
html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[2]/span/text()')[0].replace('作曲:','')#
作曲
album=html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[3]/span/a/text()')[0]#专
辑
label=html.xpath('/html/body/div[2]/div[2]/div[2]/div[2]/p[4]/span/span[1]/text()')[0]
#标签
#将所有数据保存到列表中
17
湖南商务职业技术学院毕业设计
music_info.append([rank,name,singer,lyricist,composer,album,label])
#将获取到的数据添加到文件中
defput_info_to_txt(txt_name):
withopen(txt_name,'w+',encoding='utf-8')asf1:
foriinmusic_info:
forjini:
ifj==i[-1]:
f1.write(j+'\n')
else:
f1.write(j+'\t')
if__name__=='__main__':
foriinrange(len(bangdang_urls)):
music_urls=get_music_urls(bangdang_urls[i])
music_info=[['排名','歌名','歌手','作词','作曲','专辑','标签']]
get_music_info()
print(music_info[0:2])
put_info_to_txt(txt_name[i])
4数据清洗与处理
在爬取收集大量的数据信息后,需要对数据进行预处理,也就是数据清洗
和检查,确定爬取的数据是否存在无效值,并要保证数据的一致性。这个对于
信息质量的评估是一项很重要的任务。不仅如此,还要将数据进行有理化和有
序化,这样处理后的数据才能在调用共享过程中方便很多开发人员对数据信息
的使用。
本次毕业设计中通过JupyterNotebook软件进行数据清洗,将爬下来的咪
咕音乐排行榜的歌曲数据和网页原数据进行比对,检查内容是否存在空值、错
值,还有数据的位置是否正确,并对不同问题的数据要进行不同的处理。
4.1数据清洗
利用JupyterNotebook从存储的txt文件中读取数据,准备进行数据清洗,
核心参考代码如下:
importpandasaspd
df=pd.read_csv(r'D:\pycharm\文件保存位置\python毕业设计\内地榜数
据.txt',sep='\t',engine='python',encoding='utf_8_sig')
18
湖南商务职业技术学院毕业设计
df.head(10)
运行核心代码生成的数据如图4-1:
图4-1数据清洗准备页面图
然后使用duplicated()方法验证数据是否存在重复值,参考示例如图4-2。
图4-2数据重复值查验图
19
湖南商务职业技术学院毕业设计
经过查验,发现数据并没有重复值。接下来,使用isnull()方法判断数
据是否存在缺失值,参考示例如图4-3。
图4-3数据缺失值查验图
经过数据查询后发现数据也没有存在缺失值,以同样的方法,去处理其他
排行榜的数据。经验证,内地榜和其他排行榜的数据没有漏洞、错乱或者空值
等问题。
接下来,根据需要,将有效数据进行一致的统一规划,并且去掉不需要的
行和列数据,以避免冗余数据的影响,最终的数据清洗后的页面效果如图4-4
所示。
20
湖南商务职业技术学院毕业设计
图4-4内地榜数据清洗完成界面图
保留需要的行列数据,整理为原网页格式存入txt文件中,以便留存后续
作为统计分析、可视化使用。
4.2数据储存
数据储存的方式方法有很多,可以直接用记事本格式储存(txt),也可以
用其他文件的形式储存csv、excel、json等,但是以上方法保存的数据体量都
普遍不大。如果需要储存大量的数据信息就需要用到数据库,数据库分为关系
型和非关系型数据库。关系型数据库比较典型的有MySQL和Oracle等,非关系
型数据库等以键值对形式储存数据,其中的代表有Mongodb、Redis等。
本次毕业设计用到的是txt、MySQL来实现数据储存操作。首先,使用Python
的文件写入方法将数据写入到txt,实现代码如下。
#将获取到的数据添加到文件中
defput_info_to_txt(txt_name):
withopen(txt_name,'w+',encoding='utf-8')asf1:
foriinmusic_info:
forjini:
ifj==i[-1]:
f1.write(j+'\n')
else:
f1.write(j+'\t')
然后,打开VMwareWorkstationPr虚拟机启动Linux环境,将txt文件数
据上传到Linux系统后将其导入到MySQL。最后进行数据检验,如图4-5所示。
21
湖南商务职业技术学院毕业设计
图4-5数据存储到MySQL检验页面图
数据存储的实现需要考虑较多的细节,比如在遍历歌曲列表信息时,要将
每行的歌单信息以一定的格式分隔,并在每行数据读取的结尾进行换行,在数
据储存完成后,一定要检验数据是否存储成功。
4.3编程实现
创建数据库,用于存放数据表,实现代码与结果如图4-6。
图4-6创建数据库图
创建数据表,构建存储数据的结构,实现代码与结果如图4-7。
图4-7创建数据表图
将存储在本地txt文件的歌单信息上传到Linux系统后,将其导入数据表
中,实现代码与结果如图4-8。
图4-8导入文件数据到数据表图
22
湖南商务职业技术学院毕业设计
通过查询数据表验证存入数据是否正确,实现代码与结果如图4-9。
图4-9数据验证图
之所以将爬取并存储到txt的文件数据转存到存储到MySQL数据库,有以
下几个原因:
(1).数据库的数据结构更为清晰和规范,可以更方便地进行数据管理和查
询。
(2).数据库可以进行事务处理,可以保证多个操作的一致性和完整性。
(3).数据库可以进行并发处理和多线程操作,可以提高数据处理的效率。
(4).数据库能够对数据进行备份和恢复,可以提高数据的安全性。
(5).数据库还可以进行数据的分析和处理,为业务提供更多的可能性。
综上所述,将爬取数据存储到MySQL数据库更加灵活、高效、安全和便捷,
是更为理想的方式。
5数据统计与分析
5.1数据准备
因为JupyterNotebook操作简单方便,本次毕业设计选择Jupyter
Notebook软件进行数据准备。首先导入相关库,使用pandas存储在txt文件的
数据,选取部分字段,读取前十条数据作为作为数据准备,核心实现代码如下,
数据准备结果如图5-1。
importpandasaspd
df=pd.read_csv(r'D:\pycharm\文件保存位置\python毕业设计\内地榜数
23
湖南商务职业技术学院毕业设计
据.txt',sep='\t',engine='python',encoding='utf_8_sig')
df.head(10)
图5-1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 黑龙江省哈尔滨市第三中学2025-2026学年度下学期高二学年期中考试 地理答案
- 2026年证据链合同(1篇)
- 2026年林场转让合同(1篇)
- 年产300吨3,6-二氯哒嗪和60吨甲基吡啶磷技改项目可行性研究报告模板-立项备案
- 正畸科护理操作流程图
- 亿童小班数学活动教案:击鼓取物-感知5以内数量
- 职业健康安全管理合规性评价表(建筑施工)
- 2026年机修钳工(初级)考试题库(附答案)
- 考研体育乒乓球试题及答案
- 纺织服装业供应链金融创新研究
- 2025年劳动保障监察大队招聘考试真题(附答案)
- 2026年高中历史教师招聘试题及答案
- 2025年《青铜葵花》(曹文轩)阅读测试题和答案
- (完整版)气体灭火系统安装施工方案
- (正式版)T∕CPCPA 0017-2026 托育机构婴幼儿回应性照护服务规范
- 家族修谱工作制度
- T/CEC 211-2019 火电工程脚手架安全管理导则
- 国家事业单位招聘2024商务部投资促进事务局招聘13人笔试历年参考题库典型考点附带答案详解
- 财务科内部管理制度
- 2025年国有企业招聘招商专业人才20人笔试历年备考题库附带答案详解
- 教师招聘考试时事政治2026卷及答案
评论
0/150
提交评论