几年前,网上有一款为朋友圈生成相册的产品。但是它的流程很不互联网:首先,你需要添加一个指定的微信公众号,并赋予这个微信公众号查看你朋友圈的权限;然后,等待几个小时;最后,得到一个链接,在相册模板中显示我朋友圈的内容;一开始觉得很牛逼,还以为这个产品是怎么获取个人朋友圈数据的,直到看到使用过程中需要先添加微信好友,瞬间笑明白了。其实朋友圈一直是很多人的爬虫想要收藏的领地。以前朋友圈只能在手机或者pad上看。获取朋友圈数据,要么手动复制人肉,要么通过hook处理。**这两个操作,一个太低端,一个太高端。有没有更简单的东西?**使用Appnium可能是一种方法,比hooks操作简单很多,但是Appnium的环境配置会吓跑很多朋友。**所以,Appnium还是有稍微高一点的门槛。直到最近,电脑版微信开始支持朋友圈,事情似乎有了转机!因此,可以通过PyWinAuto和PyAutoGui这两个工具来实现桌面程序的自动控制和数据采集。这两个工具是否可以应用于微信朋友圈数据的采集?首先,导入所需的库:1.`importpsutil`2.`导入pywinauto`3。`frompywinauto.applicationimportApplication`其中:psutil用于获取微信电脑版的进程信息;pywinauto用于自动控制微信电脑然后,我们通过psutil库获取微信电脑版程序的进程号:1.`PID=0`2.`forprocinpsutil.process_iter():`3。`尝试:`4。`pinfo=过程。as_dict(attrs=['pid','name'])`5.`除了psutil.NoSuchProcess:`6。`通过`7。`其他:`8。`if'WeChat.exe'==pinfo['name']:`9.`PID=pinfo['pid']`此进程ID用于提供PyWinAuto连接微信电脑版。然后,使用PyWinAuto实例化一个应用程序:1.`app=Application(backend='uia').connect(process=PID)`然后控制微信电脑版,打开朋友圈窗口:1.`win=app['微信']`2.`pyq_btn=win.child_window(title="朋友圈",control_type="Button")`3.`cords=pyq_btn.rectangle()`4.`pywinauto.mouse.click(button='left',coords=(cords.left+10,cords.top+10))`以上代码实现控制微信电脑版打开朋友圈窗口的Python代码.效果如下:打开朋友圈的窗口,获取到里面的数据怎么办?我们先用.dump_tree()方法看看朋友圈窗口中各个控件的结构是什么样的:1.`print(pyq_win.dump_tree())`这会将朋友圈窗口中所有显示的组件的结构打印出来控制台显示的内容如下图所示:我们来看一个具体的例子,比如朋友圈中的这条信息:它在dump_tree()中的结构如下:可以看到,每条信息,比如朋友圈的名字联系人,朋友圈内容,朋友圈发布时间等,由各种组件组成。我们可以通过获取和控制这些组件来实现数据提取。比如在这个例子中,我们可以通过定位编辑组件来获取这个朋友圈的内容:和其他工具相比,是不是极其简单?不仅简单,而且效果也很好。有兴趣的朋友赶快试试吧!文末你们的点赞和收藏是对我最大的鼓励!欢迎关注我,分享Python干货,交流Python技术。如果大家对文章有什么见解,或者有什么技术问题,欢迎在评论区留言讨论!
