Python爬取微信聊天信息是一种利用Python语言来抓取微信聊天信息的方法。它可以帮助我们快速地收集和分析微信上的大量数据,从而为我们的研究提供有用的信息。
要使用Python爬取微信聊天信息,首先需要安装一些必要的库,如itchat、requests、BeautifulSoup等。然后,我们需要使用itchat库来连接微信并获取好友列表:
import itchat itchat.login() friends = itchat.get_friends(update=True)[0:]
之后,我们就可以使用requests库来请求好友的个人主页:
import requests url = 'https://wx2.qq.com/cgi-bin/mmwebwx-bin/webwxgetcontact?lang=zh_CN&pass_ticket=xxx&r=xxx&seq=0&skey=xxx' headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'} response = requests.get(url, headers=headers)
最后,我们就可以使用BeautifulSoup库来解析返回的HTML文本:
from bs4 import BeautifulSoup soup = BeautifulSoup(response.text, 'lxml') for item in soup.find_all('memberlist'): print(item['nickname'], item['username'])
通过上述步骤,我们就能够轻松地爬取微信上的所有好友列表和相关数据了。此外,我们还可以使用相关API来获取特定好友之间的历史对话内容。总之,Python爬取微信聊天信息是一个强大而有效的工具,能够帮助我们快速地获得大量有用数据。
本文转载至知乎ID:Charles(白露未晞)知乎个人专栏
下载手机App,0基础随时随地学编程>>戳此了解
赋闲在家几天,想鼓捣点简单又好玩的脚本分享给大家,于是就有了这篇文章~~~
本文将利用Python记录微信好友/微信群中他人撤回的消息,并将这些消息通过文件传输助手发送到自己的手机上。
让我们愉快地开始吧~~~
百度网盘下载链接: https://pan.baidu.com/s/1UdTXIXy4iGes24zv9YBIZg
密码: j43u
Python版本:3.6.4
相关模块:
itchat模块;
以及一些Python自带的模块。
安装Python并添加到环境变量,pip安装需要的相关模块即可。
思路比较简单,利用itchat模块登录网页版微信,将自己微信收到的所有消息都缓存下来,当检测到有消息撤回时,将撤回消息的缓存版本通过文件传输助手发送到自己的手机上。
因此,你必须保证脚本24小时运行才可以一直监视别人有没有撤回消息。
具体实现过程详见相关文件中的源代码。
Windows系统:
手机端:
视频链接
Linux系统:
手机端:
视频链接
我们先来了解一下微信撤回消息的原理:
其实微信撤回消息原理就是操作者在点击撤回的时候,客户端会自动发一条系统消息:“xxx撤回了一条消息”,然后对方app端收到消息后解析,替换原消息,改个显示的样式即可
猪哥给大家演示一下正常消息
和撤回消息
的内容到底有什么区别:
正常消息:Content="你好骚啊"
,大家留意一下MsgId="8784390488772995470"
撤回消息:Content是一串xml格式的内容
我们在下面把它格式化看看
<sysmsg type="revokemsg">
<revokemsg>
<session>xxx</session>
<oldmsgid>1090336364</oldmsgid>
<msgid>8784390488772995470</msgid>
<replacemsg><![CDATA["猪哥" 撤回了一条消息]]></replacemsg>
</revokemsg></sysmsg>
分析上面撤回的Content
字段我们发现<msgid>8784390488772995470</msgid>
的id与我们之前发送消息的id是一致的,而<replacemsg>
这个标签也验证了我们的猜想,确实是用新消息替换原消息。
根据抓取正常消息
和撤回消息
的内容我们发现规则:撤回消息中会包含之前被撤回的那条消息的msgid
,那我们只要找到之前那条消息就可以了,而wxpy
模块默认为我们缓存了最近的200条消息,所以我们只要遍历这些历史消息然后比较msgid
就可以找到被撤回的那条消息啦!
如果你微信消息太过频繁,2分钟之内消息数量超过200,则可以将max_history
设置大些。
原理也搞懂了,被撤回的消息也找到了,就差最后一步转发消息了,如果你之前玩过wxpy
肯定会了吧,只要一行代码就可以将消息转发:
msg.forward(bot.file_helper)
原理和过程讲完了,代码贴出来给大家看看,注释还是比较详细,有不懂得话可以在学习群中问我。
微信消息防撤回功能实现简单,但实用性很好,目前项目的唯一缺点就是易用性差,简单说就是我们还没有将项目部署服务器,每次使用都得打开电脑然后运行还得一直开着,猪哥考虑后面将项目部署在云服务器上或者打包成apk,这样就使用起来就非常方便了,而且还可以把apk发给朋友,让朋友也体验此功能!
学会这招,再也不用好奇对方到底撤回了啥消息,快下载项目试试吧!下载项目后可直接运行不需要修改代码!
Github项目地址:https://github.com/pig6/wxrobot
wxpy官方文档:https://wxpy.readthedocs.io/zh/latest
代码截止2018-06-25测试无误。
T_T这个脚本是完全合法无害的,只不过把自己收到的所有消息全部缓存下来,以防止别人撤回消息后自己看不到罢了。
不过应该也没人会无聊到把脚本放服务器上跑来监视自己的好友有没有撤回消息吧~~~
所以就纯当技(无)术(聊)交(取)流(乐)了?
Python3 字符串描述count() 方法用于统计字符串里某个字符出现的次数。可选参数为在字符串搜索的开始与结束位置。语法count()方...
Linux/Unix 的系统上,Python 解释器通常被安装在/usr/local/python3这样的有效路径(目录)里。我们可以将路径/usr/local/pytho...
Python 从设计之初就是一门面向对象的语言,正因为如此,在 Python 中创建一个类和对象是很容易的。本章节我们将详细介绍 Python...
在上一章中,我们已经学会了如何使用Python3爬虫抓取文字,那么在本章教程中,将通过实例来教大家如何使用Python3爬虫批量抓取图...
以下实例在 Python3.4.3 版本下测试通过: Python Hello World 实例 Python 数字求和 Python 平方根Python 二次方程 Python 计算...