渣男?上十字架!
最近王和李的离婚闹得沸沸扬扬,相信大伙们都是吃了不少的瓜。本文结合李的第一篇文章发文下面的网友们的评论来看看大家到底怎么看待这件事。
网页
爬取字段
- 用户昵称
- 评论时间
- 评论内容
- 点赞数
- 回复数
- 性别
- 城市
数据来自该地址:https://weibo.com/5977512966/L6w2sfDXb#comment
爬取的下面的全部评论:
网页规律
微博的网页属于Ajax渲染,当我们向下滑动的时候会显示的评论,地址栏的URL不变,需要找到实际的请求URL。
1、右击【检查】,找到【Network】
2、确定每页的内容URL
这里是首页部分
滑动之后显示每页内容的URL;
3、每页的URL地址
1 | start_url = "https://weibo.com/ajax/statuses/buildComments?is_reload=1&id=4715531283728505&is_show_bulletin=2&is_mix=0&count=10&uid=5977512966" |
从第二页开始的URL地址多的部分是max_id,刚好这个参数的值是前一页的返回内容:
4、介绍第一页的爬取
1 | main_url = "https://weibo.com/ajax/statuses/buildComments?is_reload=1&id=4715531283728505&is_show_bulletin=2&is_mix=0&count=10&uid=5977512966" |
比如我们可以获取第一个用户的相关信息:
最终我们可以看到第一页爬取的数据展示:
参考上面的逻辑可以爬取到微博下面的全部评论
微博分析
导入库
导入需要的库:
1 | import pandas as pd |
数据EDA
查看我们爬取到数据的基本信息,我们导入前5行数据:
基本信息:查看数据的shape形状,总共是47638行,8个字段,并且不存在缺失值。
时间预处理
将我们爬取到的格林威治形式的时间转成熟悉的标准化时间形式:
1 | import datetime |
其他处理
- 将评论中的img部分去掉
- 对于爬取的城市我们提取其中的省份或者直辖市,如果是国外直接取值为:海外
1 | df["评论内容"] = df["评论内容"].apply(lambda x:x.split("<img")[0]) |
地区吃瓜大比拼
1 | fig = px.bar(df1[::-1], |
国内的省份中北京、广东、上海、江苏都是吃瓜的大省份!
性别大比拼
1 | df2 = df.groupby("性别")["用户"].count().reset_index() |
果然:女性真的很爱吃瓜🍉远超男性
火爆评论
通过点赞数和回复数来看看这篇微博下的火爆评论:
点赞数
有位网友的评论87万+的点赞数!666
回复数
同样还是这位网友的评论,回复数也是No.1
从点赞数和回复数的整体分布来看,这条评论真的是别树一帜!已经完全偏离了其他的数据:
查看原数据我们发现这条评论就是:
总结:爆料全是真的
看来以前的很多爆料都被锤啦!
微博用户年龄
1 | df["间隔"] = df["评论时间"] - df["注册时间"] # 时间间隔 |
通过用户的年龄和点赞数、回复数来看,用户年龄在7、8、9、10年时的用户更为活跃;年龄偏大或者新生的微博用户的评论较少。
同时点赞数也集中在2000-5000之间的部分
评论时间
1 | px.scatter(df, |
从用户的评论时间点来看,当李发了第一篇文之后,瞬间引爆了评论(左侧密集部分);这条微博沉寂了4天,没有想到23号的晚上又火了
粉丝吃瓜重点
将粉丝的评论内容分词找到他们的重点:
1 | comment_list = df["评论内容"].tolist() |
重点关注下前50个词语:
除了两位当事人,粉丝还比较关心他们的孩子。毕竟孩子是无辜的,但是他们的瓜不正是孩子引起的吗?个人的看法。
总之:不管是王还是李,如果真的是渣男或者渣女,请上十字架,阿门!