iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python爬虫+词云图,爬取网易云音乐
  • 147
分享到

python爬虫+词云图,爬取网易云音乐

云图爬虫网易 2023-01-31 00:01:06 147人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

又到了清明时节,用python爬取了网易云音乐《清明雨上》的评论,统计词频和绘制词云图,记录过程中遇到一些问题 爬取网易云音乐的评论 一开始是按照常规思路,分析网页ajax的传参情况。看到参数都是加密过的,在网上参考别人之前爬虫的思路。发

又到了清明时节,用python爬取了网易云音乐《清明雨上》的评论,统计词频和绘制词云图,记录过程中遇到一些问题

爬取网易云音乐的评论

一开始是按照常规思路,分析网页ajax的传参情况。看到参数都是加密过的,在网上参考别人之前爬虫的思路。发现陆续有人用模拟传参,自己加密参数来实现,主要用Pythonjs版本的。我尝试了几次,加密过程有问题没解决。后来突然看到有人提到了一个get请求获取评论的url,实测可以用,估计是传参之后,实际调用的内部接口。
Http://music.163.com/api/v1/resource/comments/R_SO_4_167882?limit=20&offset=0
尝试之后发现可以直接调用,那么就简单多了
下面截取部分爬取的内容

2014-11-25 20:01:18 年轻的记忆:高一听的歌,现在都大三了,时间好快
2016-03-26 19:15:38 这个昵称很多人用过:东瓶西镜放,是安徽古建筑习俗。客厅东部放瓶子,西边放镜子,意为终生平(瓶)静(镜)。[憨笑]
2016-06-28 17:04:09 Gorlomi:周杰伦的中国风是宫廷的,有传统的气息;许嵩的中国风是江南的,有梅雨的味道。
2016-03-16 16:48:20 树下蜗牛壳:半城烟沙半城血,清明雨上客怎眠。千百度里寻伊人,不见当年庐州月。
2015-01-05 20:18:57 等烟雨天青青:初一知道的许嵩,然后就一直听了下来,不知不觉已经大一了,忽然感觉时间过得太快了,,,,那年的我喜欢和她一起坐在操场的台阶上听着这首歌,现在的她还好么?
2015-07-05 21:33:54 lyc秋千坠:记得初二时在考场拼命背书为接下来的考试,听到别人在放《清明雨上》,激动了一下,随后又很失落。当时那么喜欢的歌手别人也在听着,像一杯好酒被别人偷喝了一半,为了骗自己兑上水,却失了原来的味道。再者,总觉得,这样的歌只适合一个人静静听,在那么宽敞的地方放,总觉得被破坏了。
2014-12-05 17:09:40 我的名字十二字不信你数数:你总说毕业遥遥无期    转眼却各奔东西.................
2016-04-04 22:28:55 妈妈说张泽华会是建筑大师:妈,我来看你了。麦苗已经长得很高是你喜欢的希望绿。跟着爸爸后面走向你小时候一起旅游的模样。那年在北京庙会我推着轮椅你新奇少数民族的各种风俗不愿再待在医院等死。现在对所有糯米类的食物迷之爱恋即使是前段时间的青团也容易让我想到当初喂你汤圆的时候你把黑芝麻吃掉把软软的汤圆皮喂给我的样子
2017-03-07 14:46:59 此乃一:十年了,想当年在安医上学的时候,你也没和我上下铺,但是也睡在我对面的下铺,有时候你在寝室哼着没有没有名字的歌曲,大家都在想着你以后可以去唱歌,有时候寝室去逍遥津玩,你也忙着去写歌,结果这么多年过去了,你果然去唱歌了,而我也按部就班的成为了一名医生,也许这就是人各有志吧,523。
2014-12-06 22:17:22 煮壶时光品良辰:传唱许嵩歌,谁知歌里愁?
2016-02-06 18:26:49 杜大官人:         “庭有枇杷树,吾妻死之年所手植也,今已亭亭如盖矣”
2015-04-04 14:10:05 女侠七七可能不是流氓:又是一年清明。现在大二。当然不会忘记初中有多疯狂的迷恋他的音乐和他这个人。那时候听清明雨上会脑补如果有MV就该是黑白画面,正装许嵩站在小雨中在墓碑上放一朵白菊。晚上做的梦就不太好了,梦里墓碑上是我的照片……初中同学应该记得吧[大哭]
2014-11-10 18:44:22 蛋挞皮衣:我的许嵩许嵩许嵩。喜欢你 本来与你就无关 何须在乎更多其他的声音[可爱]
2018-04-05 07:17:10 新长征路上的-摇滚:那年刚听这歌的时候我奶奶外婆还健在,如今她们都已驾鹤西去,最大的遗憾是因为驻守在祖国的西南边陲二位最疼我的老人离世时我都在执行任务,我都没能赶会去见最后一面,送上最后一程。奶奶,外婆,又是清明节了,我再也吃不到你们做的清明果,喝不到你们采的清明茶了,你们在那边还好吗?
2018-04-09 15:24:03 酥酥的酱:为何是清明雨上而非雨下?       雨上是有你的天堂,雨下独留我彷徨
2019-04-05 22:28:47 vinegar醋醋:当年清明有嵩鼠给我打电话唱这首歌。转眼已经六七年
2019-04-05 22:28:46 遇见遇见遇见1997:今年的清明节没有下雨
天气很好  愿您也好❤️
2019-04-05 22:28:44 诗卿不诗情:初一的回忆
2019-04-05 22:28:30 月初寒霜冻佳人:又是清明雨上

解析JSON详情


根据url容易看出limit是每页的条数,offset是步长。随便试了几个参数,验证猜想正确。解析requests返回的json结构时,开始第一页的评论内容是hotComments,就都按照hotComments来解析。但是翻页后出错,原来后面其他页的是comments。估计是网易把历史的热门评论放到第一页,后面的是按时间倒叙的日常评论

词频统计和停止词

接下来对爬下来的txt文本进行词频统计,中文分词用的是jieba库,发现,和。等一类的无用词出现的频率也很高,于是在网上下载了一个停止词的txt文件,将一些没有的常见词过滤掉,不参与统计

词云图

刚开始的时候,图片里的中文是乱码,但是英文可以正常显示。后来发现是要加上font_path='Hiragino Sans GB.ttc',不然中文字体不能正常显示,英文字体则可以直接支持。

源码如下

# coding: utf-8
import requests
import json
import time
from Wordcloud import WordCloud
import jieba
import numpy
import PIL.Image as Image
import io

headers = {
    "User-Agent": "Mozilla/5.0 (windows NT 10.0; WOW64) AppleWEBKit/537.36 (Khtml, like Gecko) Chrome/55.0.2883.87 Safari/537.36",
    "referer": "http://music.163.com/song?id=167882&market=baiduqk"
}

stop_path = "./source/stopword.txt"
comment_path = "./source/coments.txt"


# 获取单页评论,写入文件
def get_comments(url):
    res = requests.post(url, headers=headers)
    comments_json = json.loads(res.text)

    if ('hotComments' in comments_json):
        comments = comments_json['hotComments']
    else:
        comments = comments_json['comments']

    # w是写,a是追加
    with open(comment_path, 'a') as f:
        for each in comments:
            comment_time = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(each['time'] / 1000))
            f.write(comment_time + ' ' + each['user']['nickname'] + ':' + each['content'] + '\n')


# 请求格式
# host = "http://music.163.com/api/v1/resource/comments/R_SO_4_167882?limit=20&offset=0";
def get_all_comments():
    # 歌曲id
    id = "167882"
    page = 150
    base_url = "http://music.163.com/api/v1/resource/comments/R_SO_4_" + id + "?limit=20&offset="
    for p in range(page):
        offset = p * 20
        url = base_url + str(offset)
        get_comments(url)
        print("page " + str(p + 1) + " finish")


# 统计词频
def word_count():
    with io.open(comment_path, encoding="utf-8") as file:
        file = file.read()
        stopwords = [line.strip() for line in open(stop_path).readlines()]
        words = jieba.lcut(file)
        counts = {}

        for word in words:
            if word not in stopwords:
                # 不统计字数为一的词
                if len(word) == 1:
                    continue
                else:
                    counts[word] = counts.get(word, 0) + 1

        items = list(counts.items())
        items.sort(key=lambda x: x[1], reverse=True)
        for i in range(50):
            word, count = items[i]
            print ("{:<10}{:>7}".fORMat(word, count))


# 生成词云图
def word_cloud():
    with io.open(comment_path, encoding="utf-8") as file:
        file = file.read()
        text = ''.join(jieba.cut(file))

        mask_pic = numpy.array(Image.open("./source/1.jpg"))
        stopwords = open(stop_path).read()

        # 3.设置词云的背景颜色、宽高、字数
        wordcloud = WordCloud(
            font_path='Hiragino Sans GB.ttc',
            mask=mask_pic,
            stopwords=stopwords,
            background_color="white",
            width=1200,
            height=600,
            max_words=500
        ).generate(text)

        file_name = "./pic/" + time.strftime("%Y%m%d%H%M%S", time.localtime()) + ".jpg"
        wordcloud.to_file(file_name)
        print("save pic finish:" + time.strftime("%Y%m%d%H%M%S", time.localtime()) + ".jpg")

        image = wordcloud.to_image()
        image.show()


def main():
    # 获取前150页评论
    get_all_comments()

    # 生成词云图
    word_cloud()

    # 统计词频
    word_count()


if __name__ == "__main__":
    main()

--结束END--

本文标题: python爬虫+词云图,爬取网易云音乐

本文链接: https://www.lsjlt.com/news/181714.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python爬虫+词云图,爬取网易云音乐
    又到了清明时节,用python爬取了网易云音乐《清明雨上》的评论,统计词频和绘制词云图,记录过程中遇到一些问题 爬取网易云音乐的评论 一开始是按照常规思路,分析网页ajax的传参情况。看到参数都是加密过的,在网上参考别人之前爬虫的思路。发...
    99+
    2023-01-31
    云图 爬虫 网易
  • python语言怎么爬取网易云音乐
    小编给大家分享一下python语言怎么爬取网易云音乐,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!正式进入主题首先还是去找目标网页并开始分析网页结构,如下上面的三...
    99+
    2023-06-02
  • 【Python3爬虫】网易云音乐歌单下载
      下载网易云音乐热门歌单     requests,multiprocessing,re。     (1)页面分析:首先打开网易云音乐,选择热门歌单,可以看到以下歌单列表,然后打开开发者工具    因此我们需要请求的url就是...
    99+
    2023-01-30
    爬虫 网易 音乐
  • python3爬虫-下载网易云音乐,评论
    # -*- coding: utf-8 -*- ''' 16位随机字符的字符串 参数一 获取歌曲下载地址 "{"ids":"[1361348080]","level":"standard","encodeType":"aac...
    99+
    2023-01-31
    爬虫 下载网 音乐
  • 如何利用Python爬虫爬取网站音乐
    小编给大家分享一下如何利用Python爬虫爬取网站音乐,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体实现引入发送网络请求的第三方库import re...
    99+
    2023-06-15
  • python爬虫教程:爬取酷狗音乐
     在常见的几个音乐网站里,酷狗可以说是最好爬取的啦,什么弯都没有,也没加密啥的,所以最适合小白入门爬虫 本篇针对爬虫零基础的小白,所以每一步骤我都截图并详细解释了,其实我自己看着都啰嗦,归根到底就是两个步骤的请求,还请大佬绕路勿喷。 1、...
    99+
    2023-01-31
    爬虫 酷狗 教程
  • Python项目实战:爬取网易云音乐评论
    前言相信大家都非常喜欢听音乐的吧,每一首歌背后都有一个故事,有爱情,有离别,有仇恨,有不舍等等,听着自己喜欢总会唏嘘,我不仅喜欢听歌,还喜欢看歌曲下面的评论,很多人都阐述了自己对歌曲的看法和理解,除了一些,你懂的..、废话不多说了。上代码吧...
    99+
    2023-06-02
  • python爬取网易云音乐排行榜实例代码
    目录网易云音乐排行榜歌曲及评论爬取一、模拟登录二、排行榜数据爬取三、排行榜评论获取总结网易云音乐排行榜歌曲及评论爬取 主要注意问题:selenium 模拟登录、iframe标签定位、...
    99+
    2024-04-02
  • Python爬取网易云歌曲评论实现词云图
    目录前言环境使用代码实现先是安装、导入所需模块1. 创建一个浏览器对象2. 执行自动化下拉页面, 直接下拉到页面的底部3.解析数据保存数据翻页保存为txt文件运行代码得到结果再做个词...
    99+
    2024-04-02
  • Python爬虫实战之网易云音乐加密解析附源码
    目录环境知识点第一步第二步开始代码先导入所需模块请求数据提取我们真正想要的 音乐的名称 id导入js文件保存文件完整代码环境  python3.8 pyc...
    99+
    2024-04-02
  • Python爬虫爬取网站图片
    此次python3主要用requests,解析图片网址主要用beautiful soup,可以基本完成爬取图片功能, 爬虫这个当然大多数人入门都是爬美女图片,我当然也不落俗套,首先也...
    99+
    2024-04-02
  • Python音乐爬虫完美绕过反爬
    目录前言开始分析(x0)分析(x1)分析(x2)分析(x3)分析(x4)通过分析获取到音乐JavaScript绕过之参数冗余CSRF攻击与防御总结代码前言 大家好,我叫善念。 这是我...
    99+
    2024-04-02
  • 利用Python网络爬虫爬取各大音乐评论的代码
    目录 python爬虫--爬取网易云音乐评论1.简易看出评论是动态加载的,一定是ajax方式。3.去查看post请求所上传的数据4.首先去查看请求是经过那些js到达服务器的...
    99+
    2024-04-02
  • 怎么使用Python爬取网易云歌曲评论实现词云图
    这篇文章主要讲解了“怎么使用Python爬取网易云歌曲评论实现词云图”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么使用Python爬取网易云歌曲评论实现词云图”吧!环境使用Python ...
    99+
    2023-06-30
  • python爬虫如何爬取图片
    这篇文章主要介绍了python爬虫如何爬取图片,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。python可以做什么Python是一种编程语言,内置了许多有效的工具,Pytho...
    99+
    2023-06-14
  • 如何使用Python爬虫爬取网站图片
    这篇文章主要介绍了如何使用Python爬虫爬取网站图片,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。此次python3主要用requests,解析图片网址主要用beautif...
    99+
    2023-06-22
  • python爬虫:爬取网站视频
    python爬取百思不得姐网站视频:http://www.budejie.com/video/新建一个py文件,代码如下:#!/usr/bin/python # -*- coding: UTF-8 -*- import urllib,re...
    99+
    2023-01-31
    爬虫 视频 网站
  • Python爬虫怎么全网搜索并下载音乐
    本篇内容主要讲解“Python爬虫怎么全网搜索并下载音乐”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python爬虫怎么全网搜索并下载音乐”吧!现在写一篇博客总是喜欢先谈需求或者本内容的应用场...
    99+
    2023-06-15
  • python爬虫爬取赶集网数据
    一.创建项目 scrapy startproject putu 二.创建spider文件 scrapy genspider  patubole patubole.com   三.利用chrome浏览器分析出房价和标题的两个字段的x...
    99+
    2023-01-31
    爬虫 数据 赶集网
  • 使用Python爬虫爬取妹子图图片
            最近在学习Python的爬虫部分。看到有网友在分享使用爬虫爬取各种网站的图片的代码,也想自己写个玩玩。今天花时间分析了一下妹子图网站的结构和HTML代码,使用urllib2和BeautifulSoup写出了一个自动下载妹子图...
    99+
    2023-01-31
    爬虫 妹子 图图
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作