概述
python版本 3.6.2
如果你是民谣控,应该听过齐叔的歌吧!那首经典的[这个年纪]但我的女人呢~但我的女人呢~ 当初听到这首歌的时候就深深的爱上,可谓真是有毒呀!
作为齐叔的歌迷,必须要分析一下齐叔呀!那么齐叔都在唱些什么呢?想办法获取所有齐叔的歌的歌词,发现酷我音乐刚好有齐叔所有音乐还包括歌词。
这下有了目标,接下来就是先拿数据啦!
引用库文件
# -*-coding:utf-8-*-
import requests
import re
from requests import RequestException
from bs4 import BeautifulSoup
import codecs
from os import path
import numpy as np
from PIL import Image
import jieba
from wordcloud import WordCloud
获取整个网页内容
def get_page(url):
Headers = {
'Host':'www.kuwo.cn',
'User - Agent':'Mozilla / 5.0(WindowsNT10.0;Win64;x64) AppleWebKit / 537.36(KHTML, likeGecko) Chrome / 60.0.3112.101Safari / 537.36'
}
try:
response = requests.get(url,headers=Headers)
if response.status_code == 200:
return response.text
return None
except RequestException:
print('请求失败!')
return None
解析页面提取所有歌曲的链接
def parse_page(html):
soup = BeautifulSoup(html,'lxml')
list = soup.find('div',attrs={'class':'geci'})
lsoup = BeautifulSoup(str(list),'lxml')
count = -1
music_url = []
for x in lsoup.find_all('a'):
count = count+1
if count%2==0:
music_url.append(x)
#输出music_url
#正则表达式提取歌曲链接和歌名
regex = '<a href="(.*?)".*?>(.*?)</a>'
pattern = re.compile(regex, re.S)
items = re.findall(pattern, str(music_url))
# 先传入规则,在传需要在匹配源
url = []
for item in items:
url.append(item[0])
# print(item[0],item[1])
#返回歌曲链接结果
return url
获取每个链接对于的歌曲歌词
def get_lrc(url):
response = requests.get(url=url)
# http://www.kuwo.cn/geci/a_285345/
bs = BeautifulSoup(response.text, 'lxml')
# 使用select方法获得的节点可能不止一个,所以返回的类型是个list
# 异常处理 http://www.kuwo.cn/geci/l_14392025 《这个年纪 - 伴奏》歌词 — 齐一 没有歌词会报错,
try:
lyric = bs.select('div#lrc_yes')[0]
if lyric!=None:
for item in lyric.strings:
# print(item)
#获取每一句歌词并写入文件
write_file(item)
except Exception:
print('当前歌曲没有歌词,歌曲链接为',url)
写入文件
def write_file(content):
with open('齐一.txt','a') as f:
f.write(content)
f.flush()
f.close()
制作词云
def draw_wordcloud():
with codecs.open('齐一.txt',encoding='utf-8') as f:
comment_text = f.read()
cut_text = " ".join(jieba.cut(comment_text)) # 将jieba分词得到的关键词用空格连接成为字符串
d = path.dirname(__file__) # 当前文件文件夹所在目录
color_mask = np.array(Image.open(path.join(d, "齐一.png"))) # 读取背景图片
cloud = WordCloud(font_path=path.join(d,'simsun.ttc'), # 字体文件 这个字体window自带有 可以自行更换
background_color='white',
# 设置背景颜色
mask=color_mask,
# 设置背景图片
max_words=2000,
# 设置最大显示的字数
random_state=50,
# 设置有多少种随机生成状态,即有多少种配色方案
max_font_size=100)
# 设置字体最大值
word_cloud = cloud.generate(cut_text) # 产生词云
word_cloud.to_file("pjl_cloud.jpg")
#生成的文件
执行方法操作
if __name__ == '__main__':
#歌单列表网址
url = 'http://www.kuwo.cn/geci/a_285345/'
#获取所有歌曲网址内容
html = get_page(url)
#解析网页,提取所有歌曲链接
music_url = parse_page(html)
#循环爬取
for url in music_url:
print('正在爬取',url)
#获取歌词
lrc = get_lrc(url)
#生成词云
draw_wordcloud()
效果图
歌词文件及背景图片下载链接:http://pan.baidu.com/s/1mhRSI96 密码:o7ky
最后
以上就是现代麦片为你收集整理的齐一都在唱什么呢+歌词词云分析的全部内容,希望文章能够帮你解决齐一都在唱什么呢+歌词词云分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复