python在爬虫方面的应用

.整体设计目标
通过本程序爬取网易云歌曲的歌词并输出展现给用户,为了让其显得更加人性化,设计了由用户输入想爬取歌词歌曲的id,而且有是否将歌词保存到文本文件、是否用歌词生成词云选项。
代码总体框架

- 效果预览



本爬虫程序用到以下几个第三方库,需要自己去下载安装:
requests、json、re、os、jieba、wordcloud、PIL.Image、numpy库。

首先要去网易云爬取歌词(此片代码是借鉴一位前辈的,我又稍加修改让歌词展现的更加简洁一点):

import requests
import json
import remusic_id = input("请输入歌曲的id:")
#我们这里以周杰伦的“布拉格广场”为例,id=210049headers={"User-Agent" : "Mozilla/5.0(Windows NT 10.0; WOW64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36 ","Accept" : "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Accept-Language" : "zh-CN,zh;q=0.9","Connection" : "keep-alive","Accept-Charset" : "GB2312,utf-8;q=0.7,*;q=0.7"}
url = 'http://music.163.com/api/song/lyric?'+ 'id=' + music_id + '&lv=1&kv=1&tv=-1'r = requests.get(url,headers=headers,allow_redirects=False)
#allow_redirects设置为重定向的参数
#headers=headers添加请求头的参数,冒充请求头#用js将获取的歌词源码进行解析
json_obj = r.text#.text返回的是unicode 型的数据,需要解析
j = json.loads(json_obj)#进行json解析
words = j['lrc']['lyric'] #将解析后的歌词存在words变量中#解析后的歌词发现每行歌词前面有时间节点,将它进行美化一下:
pattern = '\\(.*?\\)|\\{.*?}|\\[.*?]'
text1 = re.sub(pattern, "", words)#用正则表达式将时间剔除print(text1)#text1是歌词

再写个选择项是否写入文件:

 创建菜单选项
def select(writefile):print ( '''是否将歌词保存到您的歌词文件内?1:写入到文件2:不写入''' )while True:choice = input( "您的选择是:" )if choice == '1':write_into_file()breakif choice == '2':print( "主人不写入的话,以后忘词了不要怪妲己哦!" )breakelse:print( "Error! you must input a valid letter!Please try again!\n" )continue
select( 'writefile' )  # 调用是否写入文件函数

然后定义歌词存入文件函数(我写的有点繁琐,但初心是为了让用户明白程序做了什么<小洁癖>):

#创建一个文件用来保存歌词
#可以选择是否保存到文件
import os
def write_into_file():path = os.getcwd() + '/'files = os.listdir( path )#查找文件for f in files:if f == 'music_words.txt':print( "有该歌词文件" )with open(f, 'w') as file:  # 'w'代表者每次运行都覆盖内容file.write( text1 )print( "歌词写入完成" )file.close()breakelse:print( "没有该歌词文件" )def create_text(filename):path = os.getcwd() + '/'  # 当前目录为文件路径file_path = path + filename + '.txt'print( "已经帮你自动创建歌词文件" )file = open(file_path, 'w')file.write( text1 )print("歌词写入完成")  file.close()create_text('music_words')  # 调用函数

那现在就剩最后的生成词云的那部分了,生成词云之前我们也做一个选择项,将选择权交给用户<小洁癖>。此处的选择项代码和前面的文件写入选择项大同小异,我就不再讲了。直接上后面的:


def creatcloud():def trans_CN(text):# 接收分词的字符串word_list = jieba.cut( text )# 分词后在单独个体之间加上空格result = " ".join( word_list )return resulttext = trans_CN( text1 )#print( text )mask = np.array( image.open( os.getcwd()+'/1.jpg' ) )wordcloud = WordCloud(# 添加遮罩层mask=mask,  # 逗号一定要写# 生成中文字的字体,必须要加,不然看不到中文,会出现空框乱码font_path="C:/Windows/Fonts/simfang.ttf").generate( text )image_produce = wordcloud.to_image()image_produce.show()
creatcloud()

现在我们所需要的代码块就已经编写完毕我们将代码全部合在一起,附上完成代码:、
代码运行时会提示找不到1.jpg文件错误。
解决方法:在当前文件夹下放一张照片(白底),然后重命名为1.jpg即可。

import requests
import json
import re
import os
import jieba
from wordcloud import WordCloud
import PIL.Image as image
import numpy as npmusic_id = input("请输入歌曲的id:")
#我们这里以周杰伦的“布拉格广场”为例,id=210049headers={"User-Agent" : "Mozilla/5.0(Windows NT 10.0; WOW64) AppleWebKit/537.36(KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36 ","Accept" : "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8","Accept-Language" : "zh-CN,zh;q=0.9","Connection" : "keep-alive","Accept-Charset" : "GB2312,utf-8;q=0.7,*;q=0.7"}
url = 'http://music.163.com/api/song/lyric?'+ 'id=' + music_id + '&lv=1&kv=1&tv=-1'
#用这行代码可以绕过网易云的token请求
r = requests.get(url,headers=headers,allow_redirects=False)
#allow_redirects设置为重定向的参数
#headers=headers添加请求头的参数,冒充请求头#用js将获取的歌词源码进行解析
json_obj = r.text#.text返回的是unicode 型的数据,需要解析
j = json.loads(json_obj)#进行json解析
words = j['lrc']['lyric'] #将解析后的歌词存在words变量中#解析后的歌词发现每行歌词前面有时间节点,将它进行美化一下:
pattern = '\\(.*?\\)|\\{.*?}|\\[.*?]'
text1 = re.sub(pattern, "", words)#用正则表达式将时间剔除print(text1)#text1是歌词#创建一个文件用来保存歌词
#可以选择是否保存到文件
def write_into_file():path = os.getcwd() + '/'files = os.listdir( path )#查找文件for f in files:if f == 'music_words.txt':print( "有该歌词文件" )with open(f, 'w') as file:  # 'w'代表者每次运行都覆盖内容file.write( text1 )print( "歌词写入完成" )file.close()breakelse:print( "没有该歌词文件" )def create_text(filename):path = os.getcwd() + '/'  # 当前目录为文件路径file_path = path + filename + '.txt'print( "已经帮你自动创建歌词文件" )file = open(file_path, 'w')try:file.write( text1 )print("歌词写入完成")except:return("歌词写入异常")file.close()create_text('music_words')  # 调用函数# 创建菜单选项
def select(writefile):print ( '''是否将歌词保存到您的歌词文件内?1:写入到文件2:不写入''' )while True:choice = input( "您的选择是:" )if choice == '1':write_into_file()breakif choice == '2':print( "主人不写入的话,以后忘词了不要怪妲己哦!" )breakelse:print( "Error! you must input a valid letter!Please try again!\n" )continue
select( 'writefile' )  # 调用是否写入文件函数def creatcloud():def trans_CN(text):# 接收分词的字符串word_list = jieba.cut( text )# 分词后在单独个体之间加上空格result = " ".join( word_list )return resulttext = trans_CN( text1 )#print( text )mask = np.array( image.open( os.getcwd()+'/1.jpg' ) )wordcloud = WordCloud(# 添加遮罩层mask=mask,  # 逗号一定要写# 生成中文字的字体,必须要加,不然看不到中文,会出现空框乱码font_path="C:/Windows/Fonts/simfang.ttf").generate( text )image_produce = wordcloud.to_image()image_produce.show()#再定义一个选择函数
def select2():print( '''是否根据该歌词生成词云?1.yes2.no''' )while True:select = input( " your choice is:" )if select == '1':creatcloud()breakif select == '2':print( "主人不看词云,妲己觉得好可惜" )breakelse:print( "Error , you must input a vailid letter! please try again.\n" )continueselect2()

由于本人还是初学Python的小白,本程序肯定还有很多不足,还请各位大神多加担待、指点。若有任何疑问或者建议可直接评论在下方或私我。

Python爬取网易云歌词并生成词云相关推荐

  1. Python爬虫——selenium爬取网易云评论并做词云

    大家好!我是霖hero 到点了上号网易云,很多人喜欢到夜深人静的时候,在网易云听音乐发表评论,正所谓:自古评论出人才,千古绝句随口来,奈何本人没文化,一句卧槽行天下!评论区集结各路大神,今天我们来爬取 ...

  2. python爬取QQ空间说说并生成词云

    以下是生成的词云图  我的环境:Mac,Anaconda,Python2.7,以及各种用到的Python库 先来说下Anaconda Anaconda 是一个可用于科学计算的 Python 发行版,支 ...

  3. Python爬虫之js加密破解,抓取网易云音乐评论生成词云

    js破解历程 前言 技能点 界面概况 静态网页动态网页 页面解析 step1: 找参数step2:分析js函数step3:分析参数step4: 校验step5:转为python代码 编写爬虫 很多人学 ...

  4. 爬虫之js加密破解抓取网易云音乐评论生成词云

    js破解历程 前言 技能点 界面概况 静态网页 动态网页 页面解析 step1: 找参数 step2:分析js函数 step3:分析参数 step4: 校验 step5:转为python代码 编写爬虫 ...

  5. Python入门--爬取淘宝评论并生成词云

    Python爬取淘宝评论并生成词云 最新修改于2021/04/01 所需相关Python第三方库(目前最新版本即可) 推荐使用Anaconda,其使用十分方便.快捷. requests库 json库 ...

  6. python爬取网易云音乐生成王力宏歌曲词云

    python爬取网易云音乐生成王力宏歌曲词云 # -*- coding:utf-8 -*- # 网易云音乐,通过歌手id生成词云 import requests import sys,re,os fr ...

  7. python爬音乐-用python爬取网易云音乐歌曲的歌词

    今天我来分享一下如何用python爬取网易云音乐歌曲的歌词,网易云音乐的歌词的爬取思路同前面介绍过的爬取网易云音乐的歌曲评论的爬取思路一致.由于两者的加密思路都是一致的,因此我们只需分析出被加密了的参 ...

  8. [爬虫]Python爬取网易云音乐搜索并下载歌曲!

    Python爬取网易云音乐搜索并下载歌曲! 文章目录 Python爬取网易云音乐搜索并下载歌曲! 1.准备工作 2."实地"观察 3.开始码代码! 4.搜索并下载 结束语 1.准备 ...

  9. Python爬取网易云歌曲评论,做词云分析

    前言 emmmm 没什么说的,想说的都在代码里 环境使用 Python 3.8 解释器 3.10 Pycharm 2021.2 专业版 selenium 3.141.0 本次要用到selenium模块 ...

  10. 用Python爬取网易云音乐歌曲

    前天给大家分享了用Python网络爬虫爬取了网易云歌词,在文尾说要爬取网易云歌曲,今天小编带大家一起来利用Python爬取网易云音乐,分分钟将网站上的音乐down到本地. 跟着小编运行过代码的筒子们将 ...

最新文章

  1. Linux ls信息给qt gui,如何使用Qt 4把ls命令的结果显示到GUI界面上去?
  2. HLR、VLR及AUC三网元概述
  3. Windows不用虚拟机或双系统,轻松实现linux shell环境:gitforwindows
  4. 深入字节码操作:使用ASM和Javassist创建审核日志
  5. 【转】Unity Animator卡顿研究
  6. 《JavaScript专家编程》——第1章 对象和原型 1.1鸟瞰JavaScript
  7. u盘 轻量linux,3种方法来创建轻量、持久化的Xubuntu Linux USB系统盘
  8. KVM虚拟机获取所有IP(shell)
  9. html之CSS设计(文本、边框、列表标签、display设置、内外边距)
  10. Mapreduce和yarn-内存设置
  11. 根据不同条件查询_好用的大数据即席查询工具——秒级响应
  12. 计算机网络实验(二)2交换机的基本配置与管理
  13. 从PMP理论看华为销售项目运作与管理
  14. 解决国外链接下载软件速度慢的方法
  15. Excel基础篇(四):查找重复身份证号码
  16. 前端性能优化(四)——网页加载更快的N种方式
  17. 加一 — Python
  18. oracle px execute reply,关于昨天的PX Deq: Execute Reply重新开贴请教
  19. 渠道商用假流量冒充真实用户
  20. 一个比 ClickHouse 还快的开源数据库

热门文章

  1. matlab2014中GUI之菜单栏设计
  2. 2022-2028全球食品和饮料行业热转印设备行业调研及趋势分析报告
  3. 五边形组合包络图matlab,华中赛基于遗传算法的钢构件排料问题.docx
  4. 【JavaWeb】【笔记】《JavaWeb入门经典》 第15章 Struts框架
  5. 【软件下载】Axure10正式版(含汉化包)
  6. Java快捷键(学到会慢慢更新)
  7. matlab gif生成器,Matlab制作视频并转换成gif动态图的两种方法
  8. setuna快捷键_Setuna 办公截图神器
  9. java三级分销_java版微信三级分销完整源码
  10. 社区版PyCharm(PyCharm Community)也可以有可视化的数据库工具呀