公众号后台回复“图书“,了解更多号主新书内容

作者:卖山楂啦prss

来源:数据分析与统计学之美

前言

微博作为我的日常软件之一,平时除了看看热搜、肖战(哈哈),我还会时不时看看秘密,虽然从来都没有投过稿,但还是会对一些感兴趣的内容评论评论或者点点赞,前两天刷秘密突然很想知道,

  • 秘密为同学们发布最多的是哪些内容?与哪些相关?

  • 或者哪些同学喜欢去秘密下方评论?

  • 评论最多的微博多于什么相关?

  • 秘密经常会在什么时间发布微博?

  • 发布的微博都是情感正向的还是负向的?

当然这些问题后台应该最清楚,也有直接的数据,不过这里我想通过爬取的数据来看看这些问题,或许会得出不一样的结论。

开始爬虫之旅 (注:内容只是娱乐,微博内容是公开的,评论者的ID名将进行处理,只显示一部分)

抓取网址:https://m.weibo.cn/u/2514127734?uid=2514127734&t=0&luicode=10000011&lfid=100103type%3D1&q=%E5%B7%A5%E5%95%86%E7%A7%98%E5%AF%86

想要的数据包括:发布时间、发布的微博内容、评论、评论者、评论中的评论、评论者中的评论者;

未拿到的数据:评论数、点赞数、转发数、发布微博来源等;

知道想要的数据后,接下来就开始寻找数据。一般接口数据都会存在 XHR,所以沿着这个方向基本能找到数据。

最终大屏效果

部分代码

for i in cards:# 在提取json数据时,使用get方法,有就提取,没有就为空# mblog可能有可能没有if i.get('mblog'):result1 = i.get('mblog')['text']ids = i.get('mblog')['id']# print(result1,ids)# print('\n')cop = re.compile("[^\u4e00-\u9fa5]") # 匹配不是中文、大小写、数字的其他字符string1 = cop.sub('', result1) # print(string1)# print('\n')# result2 = re.sub('<[^<]+?>', '', result1).replace('\n', '').strip()sheet.append([string1,'0','0','0','0','0'])# =======微博下面的评论# time.sleep(1)# md = re.findall('<a href="(.*?)">',result1)[0].split('/')[-1]url = 'https://m.weibo.cn/comments/hotflow?id='+ ids +'&mid='+ ids +'&max_id_type=0'response1 = requests.get(url,timeout=30,headers=headers)dat1 = response1.json()if dat1['ok'] == 1:pinglun_num = dat1['data']['total_number']da = dat1['data']['data']for i in da:pinglun = cop.sub('', i['text'])created_at = i['created_at']user1 = i['user']['screen_name']sheet.append(['0',created_at,pinglun,user1,'0','0'])# =======微博下面的评论的评论if i['total_number'] > 0 and i['comments']!=False:comments = i['comments']for g in comments:text = cop.sub('', g['text'])user2 = g['user']['screen_name']sheet.append(['0','0','0','0',text,user2])

在线excel合并:http://www.docpe.com/excel/combine-excel.aspx

为了防止被封,这里在爬取时设置了随机头以及2秒的睡眠,并且没有一次性拿太多,分批次拿,每个批次保存在不同的excel文件,最终利用在线excel合并得到如下数据:

这里总的拿到接近10000条数据(包括无效数据),其中秘密内容和相关评论大概有近2000条,评论者8000左右(包括重复ID)

对数据进行处理,包括删除重复值、异常值(特殊字符)、数据脱敏等。基本的脏数据处理好之后,下面就可以开始分析啦。

秘密微博词云图

首先,把爬取到的所有微博筛选出来。

接下来,将数据导入程序中,得到如下的词云图。

或者,修改一下蒙版。

可以发现在最近这段时间,秘密发布的微博内容中这几个词出现得最多,包括:考研、图书馆、寝室、学校等,临近考研,同学们可能都比较关心学校啊、图书馆啊、座位位置啊这些,这里也祝愿咱们学校的考研人都能取得理想成绩,但行好事,莫问前程。

除此之外,喜欢、女朋友、男朋友等词语也常常出现在微博中,也许是冬天适合谈恋爱吧,记得多买一杯古茗奶茶,把它捧在手心里,暖暖的,很贴心!

秘密微博评论者

这里我一共拿到8010个用户ID(包括重复值),均进行了处理。

用数据透视表进行统计后,得到如下数据,可以看到最近一段时间在秘密下方评论最多的ID名是 海啸*****,其次是寻找****道长、最好18881、我可假猴子ha、工商**精。

数据可视化呈现代码如下:

from pyecharts.charts import *
from pyecharts import options as opts
from pyecharts.globals import ThemeType
import osos.chdir(r'C:\Users\Administrator\Desktop')
ID = ['海啸****','寻找****道长','最好****18881','我可****假猴子ha','工商***精']
values = [53,47,36,34,34]
c = (Pie(init_opts=opts.InitOpts(theme=ThemeType.CHALK)).add("", zip(ID,values),radius=["40%", "70%"]).set_global_opts(title_opts=opts.TitleOpts(title="秘密微博评论者TOP5",subtitle="卖山楂啦prss",pos_top="2%",pos_left = 'center'),toolbox_opts=opts.ToolboxOpts(# 是否显示该工具is_show=True,)).set_series_opts(label_opts=opts.LabelOpts(formatter="{b}",font_size=18)).render("数据可视化.html"))

效果如下:

下面在看一下 ID 名为 海啸****同学,都在秘密平台上评论了些什么词语(这里数据较少)

评论的微博与哪些相关:

秘密微博情感分析

这里使用模型对每一条微博进行情感分析,分析其积极分值和消极分值。但有个问题是,秘密前段时间“改版了”,许多内容合并成一条发布,这就会导致最终的模型训练结果会有偏差,这里我并没有解决这个问题,所以结果可能具有不合理性。

进一步的判断出每条微博的情感倾向。

数据可视化:总的来说,最近秘密发布的微博的情感倾向还是比较均衡的,差异并不大,正向情感略高于负向情感。

秘密微博发布时间分析

由于忘记拿发布时间的数据,所以这里从头在爬取一次,这次只要发布是时间,拿到的数据如下。

这里的时间数据是中国标准时间,需要进行转换。

import pandas as pd
import numpy as npdf = pd.read_excel('C:\\Users\\Administrator\\Desktop\\发布时间.xlsx')def trans_format(time_string, from_format='%a %b %d %H:%M:%S +0800 %Y', to_format='%Y-%m-%d %H:%M:%S'):"""@note 时间格式转化:param time_string::param from_format::param to_format::return:"""time_struct = time.strptime(time_string,from_format)times = time.strftime(to_format, time_struct)return timesif __name__ == "__main__":df["处理后的时间"] = df['时间'].apply(trans_format)

转换后的数据如下:

利用python 将时分秒变成小数。因为时间就是至1之间的小数,0是一天的开始,1就是1天了,所以时间是至1之间的小数,也就是中午12点是0.5。

比如这里:

最终处理结果:

接下来开始分箱。

bins = pd.read_csv(r"处理后的数据.csv")
bins
def cut_bins(x):if  0.083333<= x <0.250000:return '02:00:00--06:00:00'elif 0.250000 <=x <0.458333:return '06:00:00--11:00:00'elif 0.458333 <=x <0.541667:return '11:00:00--13:00:00'elif 0.541667 <=x <0.708333:return '13:00:00--17:00:00'elif 0.708333 <=x <0.791667:return '17:00:00--19:00:00'elif 0.791667 <=x <0.916667:return '19:00:00--22:00:00'else:return '22:00:00--02:00:00'bins['所在时间段'] = bins['将时分秒改成常规'].map(cut_bins)
bins

结果如下:

统计:

bins['所在时间段'].value_counts()

数据可视化:可以看到,秘密经常会在 22:00:00 – 02:00:00 这个时间段发布微博,其次是下午13:00:00–17:00:00。

可视化大屏

将图表整合,进行可视化大屏呈现。

效果链接:http://tan-07.gitee.io/ctbu-secret/

项目地址:https://gitee.com/tan-07/ctbu-secret

结果如下:

公号后台回复:工商秘密,获取本文完整代码!◆ ◆ ◆  ◆ ◆麟哥新书已经在当当上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前当当正在举行活动,大家可以用相当于原价5折的预购价格购买,还是非常划算的:
数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。
管理员二维码:
猜你喜欢
● 卧槽!原来爬取B站弹幕这么简单● 厉害了!麟哥新书登顶京东销量排行榜!● 笑死人不偿命的知乎沙雕问题排行榜
● 用Python扒出B站那些“惊为天人”的阿婆主!● 你相信逛B站也能学编程吗

Python 爬取“工商秘密”微博后,我做了这个“可视化大屏”(附gif图)相关推荐

  1. Python爬取南京地铁微博发布客流数据并进行分析

    Python爬取南京地铁微博发布客流数据并进行分析 之前在网上看到了分析北京地铁客流数据的开源项目,就想试着分析一下南京地铁的客流数据,可是找了很久没有找到可以获得南京地铁客流数据的接口,就去南京地铁 ...

  2. python爬取天气与微博热搜自动发给微信好友

    python爬取天气与微博热搜自动发给微信好友 前言 系统环境 正文 爬取中国天气网 爬取微博热搜 微信自动发送消息 源代码 总结 github地址 前言 忙着毕设与打游戏之余,突然想着写个爬虫练练手 ...

  3. python实战(一)Python爬取猫眼评分排行前100电影及简单数据分析可视化python实战(一)Python爬取猫眼排行前一百电影及简单数据分析可视化

    python实战(一)Python爬取猫眼排行前一百电影及简单数据分析可视化 一.抓取数据 需要的库 request库 响应http请求 json库 将文本保存成json形式 pyquery 类似JQ ...

  4. python爬取 过去的微博热搜(热搜神器)

    python爬取热搜神器(可以查找关键字热搜or过去的热搜) hello,因为老师给了任务,希望我们爬取一些微博上的数据,所以就想到了要爬取热搜,再根据热搜爬取评论.因为微博对过往的热搜不能根据时间进 ...

  5. Python爬取‘跌妈不认’股票数据,绘制可视化图

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理. 以下文章来源于可以叫我才哥 ,作者才哥 大家好,上次我们试着用vba在excel中绘制树状热 ...

  6. 用python爬取全国和全球疫情数据,并进行可视化分析(过程详细代码可运行)

    用Python爬取最新疫情数据 这次重大疫情,每时每刻数据都有可能变化,这篇博文将为大家讲解如何爬取实时疫情数据,并且分析数据,作出数据可视化的效果. 报告梗概: 对中国疫情分析 1.1 展示各省疫情 ...

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

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

  8. python爬取某人所有微博_Python爬取博客的所有文章并存为带目录的word文档(实例67)

    看上博客上一个作者的文章,想一次性下载到一个word文件中,并且可以设置好目录,通过word的"导航窗格"快速定位单篇文章.一劳永逸,从此再也不用去博客上一篇一篇地翻阅了.整理一下 ...

  9. Python爬取豆瓣电影、演员评分,平做出可视化图(律师函警告)

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 以下文章来源于数据森麟 作者徐麟 随着电影行业的蓬勃发展,越来越多的电影出 ...

最新文章

  1. 28 岁退休程序员自述:不是富二代,行政专业出身,非典型程序员
  2. 我决定开发自己的第一款iPhone应用
  3. 【Python】快速设置 pip 源
  4. 64. Minimum Path Sum
  5. 2023届春招实习拉钩一面凉经
  6. 年轻的工程师如何月入伍万XD
  7. jQuery基本过滤选择器
  8. java 正则表达式 table_Java 使用正则表达式
  9. 7z001怎么解压在安卓手机上面_安卓zip文件压缩RAR解压手机下载-安卓zip文件压缩RAR解压v1.0最新版下载...
  10. VSCode REMOTE SSH
  11. 机器学习课程笔记【十二】- 主成分分析
  12. 2.3Word2003段落设置1
  13. 黑苹果 惠普笔记本电池补丁_黑苹果笔记本:关于DSDT亮度表的分析与修改
  14. C语言源代码编译全过程
  15. PT100铂电阻温度传感器详解
  16. 读文献——《Batch Normalization Accelerating Deep Network Training by Reducing Internal Covariate Shift》
  17. python 写文本文件出现乱码
  18. Ubuntu 设置 OpenDNS
  19. 【Unity3D 教程系列第 12 篇】如何用Unity写一个简易的计时器工具?
  20. 控制面板中的管理工具提示位置不可用

热门文章

  1. python的easygui模块用法_Python 模块EasyGui详细介绍
  2. 关于Transitions-Everywhere
  3. dapper mysql通用类_Dapper.SqlMapper.Query的通用类型转换:DapperRow
  4. NetCore使用Dapper查询数据
  5. java中hashCode方法与equals方法的用法
  6. 业火燃尽这片幽暗荒野 世界终将翻开新一页
  7. 腾讯大举:封杀第三方微信工具 使用Wetool将被封号
  8. 计算机毕设Python+Vue养老院管理信息系统(程序+LW+部署)
  9. 解决问题最有效的方法和技巧就是---花钱
  10. RTL8721DM 双频WIFI + 蓝牙5.0 物联网(IoT)应用