说好不哭,但是再次听到你的新歌还是没忍住

2023-11-27 12:38

本文主要是介绍说好不哭,但是再次听到你的新歌还是没忍住,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

谈到周董,说他是我们的青春也不为过吧。从最开始的龙卷风,黑色幽默,我记得那个时候我才四五岁听着姐姐的mp3,疯狂循环这些歌。到后来的安静,搁浅,就天天扯着嗓子飙高音。当时的我们根本不懂歌中的心酸,现在慢慢经历过,体验过才发现成人的世界真的有太多的苦涩。昨天他发布新歌不到三分钟,各大音乐平台就被席卷了,qq音乐卡都上了热搜头条,真的只能说周董牛逼!!!

作为程序猿的我,能做的也只有敲点代码来表示对偶像的崇拜了。
在这里插入图片描述

开始爬取超话

在这里插入图片描述
这是我们使用了高级搜索功能之后的网页,可以看到

url='https://s.weibo.com/weibo/?q=%E5%91%A8%E6%9D%B0%E4%BC%A6&scope=ori&suball=1&timescope=custom:2019-09-16:2019-09-17&Refer=g'

然后仔细分析这个url,发现q=后面接的字符串其实就是周杰伦,timescope=custom:后面接的是时间,所以我们就需要自己设置关键词和时间这两个参数构造合适的url。(** 或者把之前的网页url中q=后面的字符串直接复制过去就是搜索周董了**)

得到了url剩下的就是防止反爬和网页解析了
在这里插入图片描述
我们还是检查元素然后找到了每篇超话的内容的提取标签,接下来就是提取内容

# 2、解析数据r_json = json.loads(r.text)cards = r_json['data']['cards']# 2.1、第一次请求cards包含微博和头部信息,以后请求返回只有微博信息if len(cards) > 1:card_group = cards[2]['card_group'] #if len(cards) > 1 else cards[0]['card_group']else:card_group =cards[0]['card_group']for card in card_group:# 创建保存数据的列表,最后将它写入csv文件sina_columns = []mblog = card['mblog']# 2.2、解析用户信息user = mblog['user']# 爬取用户信息,微博有反扒机制,频率太快就请求就返回418try:basic_infos = spider_user_info(user['id'])except:print('用户信息爬取失败!id=%s' % user['id'])continue# 把用户信息放入列表sina_columns.append(user['id'])sina_columns.extend(basic_infos)# 2.3、解析微博内容r_since_id = mblog['id']# 过滤标签sina_text = re.compile(r'<[^>]+>', re.S).sub(' ', mblog['text'])# 除去开头信息sina_text = sina_text.replace('周杰伦超话', '').strip()# 将微博内容放入列表sina_columns.append(r_since_id)sina_columns.append(sina_text)print(sina_columns)# sina_columns数据格式:['用户id', '用户名', '性别', '地区', '生日', '微博id', '微博内容']

然后我们得到了数据,大概是这个亚子
在这里插入图片描述
然后我们还可以用pyecharts做一下数据可视化

数据可视化部分

dic = read_csv_to_dict(2)# 生成二维数组gender_count_list = [list(z) for z in zip(dic.keys(), dic.values())]print(gender_count_list)pie = (Pie().add("", gender_count_list).set_colors(["red", "blue"]).set_global_opts(title_opts=opts.TitleOpts(title="性别分析")).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")))pie.render('gender.html')def analysis_age():"""分析年龄:return:"""dic = read_csv_to_dict(4)# 生成柱状图sorted_dic = {}for key in sorted(dic):sorted_dic[key] = dic[key]print(sorted_dic)bar = (Bar().add_xaxis(list(sorted_dic.keys())).add_yaxis("周杰伦打榜粉丝年龄分析", list(sorted_dic.values())).set_global_opts(yaxis_opts=opts.AxisOpts(name="数量"),xaxis_opts=opts.AxisOpts(name="年龄"),))bar.render('age_bar.html')# 生成饼图age_count_list = [list(z) for z in zip(dic.keys(), dic.values())]pie = (Pie().add("", age_count_list).set_global_opts(title_opts=opts.TitleOpts(title="周杰伦打榜粉丝年龄分析")).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {c}")))pie.render('age-pie.html')def analysis_area():"""分析地区:return:"""dic = read_csv_to_dict(3)area_count_list = [list(z) for z in zip(dic.keys(), dic.values())]print(area_count_list)map = (Map().add("周杰伦打榜粉丝地区分析", area_count_list, "china").set_global_opts(visualmap_opts=opts.VisualMapOpts(max_=200),))map.render('area.html')def analysis_sina_content():"""分析微博内容:return:"""# 读取内容列dic = read_csv_to_dict(6)# 数据清洗,去掉无效词jieba.analyse.set_stop_words(STOP_WORDS_FILE_PATH)# 词数统计words_count_list = jieba.analyse.textrank(' '.join(dic.keys()), topK=50, withWeight=True)print(words_count_list)# 生成词云word_cloud = (WordCloud().add("", words_count_list, word_size_range=[20, 100], shape=SymbolType.DIAMOND).set_global_opts(title_opts=opts.TitleOpts(title="周杰伦打榜微博内容分析")))word_cloud.render('word_cloud.html')

成果图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这篇关于说好不哭,但是再次听到你的新歌还是没忍住的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/427680

相关文章

C++中第一次听到构造函数

在C++中第一次听到构造函数这个名词,在C#中又遇到了。   在创建某个类时,由于对该对象的状态(数据)不是很明确,因此需要对其进行初始化。比如说我们要在长方形这个类中创建一个对象,或者说新建一个长方形,那么我们首先要确定他的长和宽,假如我们无法确定它的长和宽,那么我们是无法造出一个长方形来的。所以就要使用这个长方形类中一个用来构造该类所有对象的函数--构造函数。由于该函数要在创建一个新对象

杂谈:再次写给我们这些浮躁的程序员

再次写给我们这些浮躁的程序员     多做项目,多思考 不要害怕做事,刚毕业的同学最缺的就是工作经验,乱七八糟的项目能让你很快就了解了一个公司的业务与使用的技术,并且可以多接触同事与客户。 当你毕业后刚进一家公司时,如果主管没有把你安排到项目组工作,那真的很杯具,因为他认为你还不能胜任工作或者你的加入会让项目组更糟。 还有人说,我刚进公司,公司就把我当成了苦工,工资又低,项目组加入好几个,也做

button 提交后再次刷新页面

button,input type=button按钮在IE和w3c,firefox浏览器区别 当在IE浏览器下面时,button标签按钮,input标签type属性为button的按钮是一样的功能,不会对表单进行任何操作。 但是在W3C浏览器,如Firefox下就需要注意了,button标签按钮会提交表单,而input标签type属性为button不会对表单进行任何操作。 解决方案:

使用filter改变改变地址,但又不想被本过滤器再次拦截的方法

继承HttpServletRequestWrapper重写里面的方法 如果是servlet重写getRequestURI() 如果是spring mvc重写 getServletPath()  可以根据getDispatcherType()类确定是那种调度类型,一般客户端请求action,或controller都是REQUEST,controller跳转到页面是FORWARD。

Qt 运行一个应用程序,再次点击程序快捷方式弹出程序窗口

代码实现 .h文件 #ifndef SINGLEAPPLICATION_H#define SINGLEAPPLICATION_H#include <QObject>#include <QWidget>#include <QApplication>#include <QtNetwork/QLocalServer>class SingleApplication : public QAppl

跑步用耳机哪款好?这五款运动骨传导耳机健身人士都说好!

在无线耳机市场持续繁荣的今天,入耳式耳机以其卓越的音质体验赢得了众多用户的青睐。然而,随着健康意识的提升,长时间佩戴入耳式耳机所带来的健康隐患日益受到关注。正是在这样的背景下,骨传导耳机凭借其独特的非入耳式设计,开启了健康聆听的新篇章。它不仅有效保护了耳道健康,减少了佩戴不适,还确保了用户在享受音乐的同时,能够随时感知外界环境,为日常出行增添一份安全保障。 面对纷繁复杂的骨传导耳机市场,如何挑选

Unity 对接 Android 第三方广告,App 切换到后台后,再次打开时,第三方广告被销毁导致无法触发回调逻辑的问题

该问题是由发行进行游戏测试时遇到并反馈的。大致情况如下: 1. 当触发了插屏广告后,在关闭广告前将 App 切换到后台,之后再次打开 App,此时插屏广告消失,并切游戏卡死。 2. 当触发激励视频广告后,在广告展示完毕前将 App 切换到后台,之后再次打开 App,此时激励视频广告消失,并且不会获得奖励。 虽然接第三方广告也接了很长一段时间了,但这个问题头一次遇到,因为不是专业 Android

WSL 在 Windows 上删除已经安装的 Ubuntu | WSL 再次重装 Ubuntu | cv2.imshow() 弹窗支持

本博文主要参考官网:https://learn.microsoft.com/zh-cn/windows/wsl/install 记录解决 WSL 创建和删除 Ubuntu 子系统的一些细微问题的 解决方案 🥇 版权: 本文由【墨理学AI】原创首发、各位读者大大、敬请查阅、感谢三连 🎉 声明: 作为全网 AI 领域 干货最多的博主之一,❤️ 不负光阴不负卿 ❤️ 文章目录

再次拿下品牌全球代言人,王鹤棣商业价值再度证明!

9月2日,FENTY BEAUTY品牌正式官宣王鹤棣为全球代言人,这也是该品牌创立至今官宣的中国首位全球代言人。 FENTY BEAUTY是由美国歌手Rihanna创立于2017年的高端美妆品牌,也是LV母公司LVMH集团联手RIHANNA一同孵化的品牌,因其产品具有强包容性,以及能满足消费者多元需求,获得了国际声誉和市场高度认可,品牌全球吸金力排在集团第一梯队,已连年被纳入LVMH集团

LeetCode-题目详解(十一):回溯算法【递归回溯、迭代回溯】【DFS是一个劲往某一个方向搜索;回溯算法建立在DFS基础之上,在搜索过程中,达到结束/裁剪条件后,恢复状态,回溯上一层,再次搜索】

这里写目录标题 一、概述1、深度优先遍历(DFS) 和回溯算法区别2、 何时使用回溯算法3、回溯算法步骤4、回溯问题的类型 二、LeetCode案例39. 组合总和40. 组合总和II77. 组合216. 组合总和 III46. 全排列47. 全排列 II剑指 Offer 38. 字符串的排列剑指 Offer II 079. 所有子集90. 子集 II剑指 Offer II 085. 生成匹