新闻详情

新闻详情

首页 / 资讯中心 / 详情

基于Pywinauto实现简陋微信朋友圈爬虫

发布时间:2026/9/26 6:35:03来源:尧图网络
基于Pywinauto实现简陋微信朋友圈爬虫
前些天发现了一个人工智能学习网站向大家分享一下。网站链接前言 – 人工智能学习网Python读取微信朋友圈_微信强制访问朋友圈代码-CSDN博客https://blog.csdn.net/oldmao_2001/article/details/119787392参考这位博主的工作我进一步更新了代码。开发环境Windows10Anaconda1.6.3(conda 4.3.30)Jupyter Notebook5.0.0Python3.6.2本工具实现功能自动读取历史微信朋友圈的发布者、点赞者列表、评论列表本工具工作流程1.读取电脑版微信进程号连接此进程#初始化默认进程 PID 0 #我们把进程ID来提供给PyWinAuto 以便于链接微信电脑版 for proc in psutil.process_iter(): try: pinfo proc.as_dict(attrs[pid,name]) except psutil.NoSuchProcess: pass else: if Wechat.exe pinfo[name] or WeChat.exe pinfo[name]: PID pinfo[pid] #PyWinAuto实例化并启动应用 app Application(backenduia).connect(process PID) windows app.windows()2.打开微信电脑版并打开朋友圈(可选)#控制微信电脑版把朋友圈打开 #win app[微信] #win.print_control_identifiers()#以树形方式打印窗口上所有控件 #pyq_but win.child_window(title 朋友圈,control_type Button) #pyq_but.draw_outline() #cords pyq_but.rectangle() #点击朋友圈按钮 #pywinauto.mouse.click(button left,coords (cords.left 10,cords.top 10))2.读取朋友圈窗口内容pyq_win app[朋友圈] pyq_win.draw_outline() pyq_win.set_focus()3.统计窗口内控件数pyq_2pyq_win.child_window(title朋友圈, control_typeList)#pyq_2类型为 pywinauto.application.WindowSpecification,控件类型为ListBox #每条朋友圈信息就是一个pyq_2的一个子控件 pyq_listpyq_2.children(control_typeListItem) countlen(pyq_list)#count记录当前页面朋友圈条数4.循环读取每一个控件的内容pyq_itempyq_2.child_window(control_typeListItem,found_indexk) publisherpyq_item.window_text() newline_index publisher.find(\n)5.拆分出控件内显示的发布者与点赞评论列表信息if newline_index ! -1: publisher publisher[:newline_index-1]#截取冒号之前 file.write(\n发布者:\n) file.write(publisher\n) pyq_comment_listpyq_item.child_window(control_typeText) despyq_item.descendants(control_typeText) file.write(点赞评论列表:\n) for element in des: textelement.window_text() if text!昨天 and text!刚刚 and not text.endswith(前): file.write(text\n)6.翻页for j in range(5): #朋友圈窗口scroll方法无效 pywinauto.keyboard.send_keys({DOWN}) # 向下滑动一次 time.sleep(0.01)注意1. 具体滑动次数根据设备性能和设备设置不同而不同建议使用者根据自己的需求进行修改2.本工具无法保证抓取结果不重复不遗漏未来开发者可进一步开发去重功能3.本工具无法读取微信朋友圈图片内容完整代码如下# -*- coding:utf-8 -*- import psutil import pywinauto import time from IPython.display import clear_output as clear from pywinauto.application import Application psutil 用于获取微信电脑版的进程信息 pywinauto 用于自动化控制微信电脑版 def getWechat(): #初始化默认进程 PID 0 #我们把进程ID来提供给PyWinAuto 以便于链接微信电脑版 for proc in psutil.process_iter(): try: pinfo proc.as_dict(attrs[pid,name]) except psutil.NoSuchProcess: pass else: if Wechat.exe pinfo[name] or WeChat.exe pinfo[name]: PID pinfo[pid] #PyWinAuto实例化并启动应用 app Application(backenduia).connect(process PID) windows app.windows() #控制微信电脑版把朋友圈打开 #win app[微信] #win.print_control_identifiers()#以树形方式打印窗口上所有控件 #pyq_but win.child_window(title 朋友圈,control_type Button) #pyq_but.draw_outline() #cords pyq_but.rectangle() #点击朋友圈按钮 #pywinauto.mouse.click(button left,coords (cords.left 10,cords.top 10)) pyq_win app[朋友圈] pyq_win.draw_outline() pyq_win.set_focus() # 将焦点设置到朋友圈窗口 open(output.txt, w, encodingutf-8) times50# 向下滑动次数 with open(output.txt, w, encodingutf-8) as file: for i in range(times): pyq_2pyq_win.child_window(title朋友圈, control_typeList)#pyq_2类型为pywinauto.application.WindowSpecification,控件类型为ListBox #每条朋友圈信息就是一个pyq_2的一个子控件 pyq_listpyq_2.children(control_typeListItem) countlen(pyq_list)#count记录当前页面朋友圈条数 for k in range(count-1): try: pyq_itempyq_2.child_window(control_typeListItem,found_indexk) publisherpyq_item.window_text() newline_index publisher.find(\n) # 如果找到换行符获取从开头到换行符的内容 if newline_index ! -1: publisher publisher[:newline_index-1]#截取冒号之前 file.write(\n发布者:\n) file.write(publisher\n) pyq_comment_listpyq_item.child_window(control_typeText) despyq_item.descendants(control_typeText) file.write(点赞评论列表:\n) for element in des: textelement.window_text() if text!昨天 and text!刚刚 and not text.endswith(前): file.write(text\n) except: print(读取错误) break for j in range(5): #朋友圈窗口scroll方法无效 pywinauto.keyboard.send_keys({DOWN}) # 向下滑动一次 time.sleep(0.01) # 等待滑动完成 #先扫描当前页面 #一层循环 读取当前页面朋友圈条数读取每一条朋友圈 #二层循环 本条朋友圈内 读取Text子窗口总数读取点赞列表和每一条评论 提取信息输出 #向下滑动 print(输出结束) if __name__ __main__: getWechat()
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

VMware安装卡在虚拟网络驱动?彻底解决与排查指南 2026/9/26 7:24:11

VMware安装卡在虚拟网络驱动?彻底解决与排查指南

1. 卡在“正在安装虚拟网络驱动程序”到底卡在了哪装 VMware Workstation 这件事,说简单也简单,一路下一步就完事;说坑也真坑,很多人第一次装就栽在同一个地方——进度条走到“正在安装虚拟网络驱动程序”这一步,然后就…

阅读更多 →
Word公式导入UEditor:前端解析OMML转MathML完整实践 2026/9/26 7:24:11

Word公式导入UEditor:前端解析OMML转MathML完整实践

最近有个实际项目把我折腾得够呛:客户那边一摞Word文档,里面全是带分数、根号、求和符号的复杂公式,要从前端导入到UEditor里展示。试了一圈发现,直接从Word复制粘贴,公式要么变成一串乱码,要么是低清图片&…

阅读更多 →
SpringBoot + Vue.js 健康管理系统设计与实现全攻略 2026/9/26 7:24:11

SpringBoot + Vue.js 健康管理系统设计与实现全攻略

毕业设计的选题年年都在变,但"健康管理系统"这五个字几乎从没缺席过。原因很简单:这个题目覆盖面广、技术栈成熟、需求清晰,而且做出来的东西能演示、能答辩、能讲出实际应用价值。但覆盖面广也意味着陷阱多——很多同学照着网上的…

阅读更多 →
低功耗便携设备开关机芯片选型指南:EH2130-52BF-2B26静态电流与按键逻辑解析 2026/9/26 7:24:11

低功耗便携设备开关机芯片选型指南:EH2130-52BF-2B26静态电流与按键逻辑解析

1. 低功耗便携设备开关机芯片的选型逻辑1.1 为什么开关机芯片成了便携设备的隐形门槛做便携式电子产品的人都有一个共识:电池容量每增加100mAh,外壳就要厚0.3mm,重量就要多几克。用户拿到手里的第一感受永远是"轻不轻、小不小、能用多久…

阅读更多 →
泰迪杯车辆驾驶行为分析:GPS轨迹清洗与聚类建模全流程 2026/9/26 7:24:11

泰迪杯车辆驾驶行为分析:GPS轨迹清洗与聚类建模全流程

简介:第七届泰迪杯数据挖掘竞赛“车辆驾驶行为分析”完整项目,含源码、文档说明与比赛总结,面向数据挖掘学习者、竞赛选手及车辆网联相关毕设学生。项目在常规驾驶行为分析基础上,引入省、市、县级温度、天气、湿度等环境数据&…

阅读更多 →
从Codex到Claude Code:小黑插图Skill迁移实战 2026/9/26 7:24:04

从Codex到Claude Code:小黑插图Skill迁移实战

打开 GitHub 看到“小黑插图 Skill”这个项目挂到 11.7k star 的时候,我第一反应是:这又是一个绑死在 Codex 生态里的玩具。直到我把它里面的指令文件、参考图资源和提示词模板搬到 Claude Code,真的跑出一张像模像样的小黑插画,我…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉