打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
☀️在爬完一周的朋友圈后,我发现了.......惊人⚠️秘密

各位童鞋,大家好,我是

😎

在《⭐UI自动化工具轻松实现微信消息收发⚡朋友圈爬取⁉️》文末给童鞋们布置了一个作业,批量朋友圈爬取,不知道大伙们是否还有映像。

看到很多小伙伴们踊跃报名参与,不禁要给你们点个赞。考虑到很多小伙伴想做却做出来,这…贴心的我这不就来给你们公布参考答案啦?

对相关基础还不了解的童鞋请参考前文:

  • ⭐UI自动化工具轻松实现微信消息收发⚡朋友圈爬取⁉️

  • 《️❤️对比PyWinAuto和uiautomation实现微信联系人自动采集❤️

  • ❤️UI自动化轻松解决微信手工群发消息的烦恼❤️

  • ⭐Python轻松下载整理或删除微信收藏⚡

首先我们开始爬取朋友圈:

🌀朋友圈数据爬取⚡

去外面转了一圈,再回来发现10分钟之内就爬完了一周的朋友圈:

当然这是因为我的微信好友太少,一周总共也只发了不到1000条消息。

晚上重新爬了一下,爬到8月21号直到朋友圈的数据无法继续拉取,始终都是这个状态说明已经无法拉取再早的朋友圈数据:

共爬到1186条朋友圈动态数据,耗时12分钟:

打开Excel简单的美化一下格式就得到如下结果:

筛选了有点赞和评论的数据。

同时对于每一条存在图片或视频的朋友圈,都会在本地存储一张截图:

可以看到在这近1200条朋友圈中有725条数据触发的图片或视频关键字产生截图:

🧚好友朋友圈数据分析🎉

读取数据:

import pandas as pd
df = pd.read_excel("朋友圈.xlsx")
df = df.convert_dtypes()

我的好友给谁的点赞最多呢?

t = df.groupby("昵称").agg(
    点赞总人数=("点赞人数", "sum"),
    评论总条数=("评论条数", "sum"),
    发朋友圈条数=("序号", "count")
)

display(t.sort_values("点赞总人数", ascending=False).head(10))

原来我的好友中,大家最喜欢给这些数据分析相关的好友点赞:

排除点只发一条朋友圈的平均点赞比例最高的依然是数据分析相关的:

秘密1:我的朋友圈中,数据分析相关的好友的朋友最容易被点赞。

t[t.发朋友圈条数 > 10].shape[0]

一周发朋友圈超过10条的话痨有21人。

t.发朋友圈条数.value_counts()
1     88
2     53
3     29
5     19
4     17
6     11
10     6
7      6
8      5
12     4
Name: 发朋友圈条数, dtype: int64

秘密2:我的好友中发过朋友圈的好友更倾向于一周只发一条朋友圈。

秘密3:几个培训机构的营销号发朋友圈最频率,现在就把你们删掉。

点赞数排名前7的朋友圈:

评论数排名前7的朋友圈:

筛选出有时间信息的朋友圈统计大家的发朋友圈时间倾向:

秘密4:好友们最倾向在中午12点和晚上7点发朋友圈。

朋友圈内容词云图:

import jieba
import stylecloud
from IPython.display import Image

words = df.内容.apply(jieba.lcut).explode()
words = words[words.apply(len) > 1]
words = words[~words.isin(["包含", "图片", "视频", "天前", "小时", "昨天", "自己"])]
stylecloud.gen_stylecloud(text=' '.join(words), max_words=500,
                          collocations=False,
                          font_path=r'C:\Windows\Fonts\msyhbd.ttc',
                          icon_name='fas fa-square',
                          size=653,
                          output_name='tmp.png')
Image(filename='tmp.png')

评论区内容词云图:

import jieba
import stylecloud
from IPython.display import Image

words = df.评论列表.dropna().apply(jieba.lcut).explode()
words = words[words.apply(len) > 1]
words = words[~words.isin(["回复", "免费", "栏目", "一个", "包含", "其他"])]
stylecloud.gen_stylecloud(text=' '.join(words), max_words=500,
                          collocations=False,
                          font_path=r'C:\Windows\Fonts\msyhbd.ttc',
                          icon_name='fas fa-thumbs-up',
                          size=653,
                          output_name='tmp.png')
Image(filename='tmp.png')

从词云图看来,我的朋友圈都爱数据爱技术爱学习爱知识,这真是惊人的密码…

☀️PC端朋友圈爬取代码与难点🌟

保证节点在可视范围内能够被完整截图:

节点的底部位置比显示界面更大时表示在外面,按一下向下的方向键。

解析节点的数据:

对内容数据直接取父节点的Name,获取完整的全部文本,解析字符串即可得到昵称、发布时间等信息。

第一麻烦点是解析出点赞和评论,上述代码之所以那么复杂是因为存在只有点赞、只有评论、既有点赞又有评论,点赞和评论都没有四种情况。为了能够同时适配这四种情况,经过反复测试最终编写出上述代码。上述代码基于必定存在的评论按钮为基准点进行查找。

第二个麻烦点是想精准只截图片、视频或视频号,需要非常多的异常检测代码,每种情况变化都非常大,很难通用。最终我直接放弃,选择直接对整个节点包含昵称一起截图。对一个节点是否进行截图,取决于这个节点的文本是否包含视频或图片关键字。

注意:截屏调用节点的CaptureToImage方法即可对指定节点的范围截图保存到指定文件。

批量爬取代码:

注意上述代码处理翻页时的异常情况,当节点不存在任何文本内容时,说明定位到了一个加载数据的节点,我们可以先按一次向上方向键回退之后,再按一下向下的方向键,即可定位到刚加载的新节点。如果回退再向下之后,名称依然是空,说明已经将朋友圈能够拉取到的数据都加载完了,可以结束程序。

⚠️说明:本文作为第一节的参考答案并不会提供可以直接复制粘贴的代码,还需要各位童鞋们自己独立完成作业。不需要写到我这么复杂,根据实际需求简化代码编写即可。

完整代码已经零碎的全部给到大家,剩下的可以根据理解,自己取敲即可。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
BOS技术支持博客 : BOS_集成消息中心开发指南
WordCloud 中英文词云图绘制,看这一篇就够了
一个人,一座城,你到底在乎什么?Python 爬虫告诉你!
stylecloud:简洁易用的词云库
高效构建基于Python的商品评论文本挖掘网页APP
带你快速看完9.8分神作《Effective Java》—— Lambda 和 Stream篇(小王工作里用的很多)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服