python获取微信聊天记录(python 提取微信聊天信息)
事情是这样的,我知道淘宝上有卖一种USB接口的大按钮,估计是给工厂或者医院之类的场景设计的,样子长这样:
然后我就一直挺想搞一个的,不为别的,就是玩,但是想来想去也没想到这玩意儿对我而言能有啥用途,就暂且搁置了这个想法。直到这几周来,每次发现办公室桶装矿泉水被喝完了之后,都需要微信通知订水师傅来送水,就萌生了个想法,我何不搞个夸张的大按钮,每次订水的时候直接拍一下按钮然后自动发送消息呢?
然后就是可行性研究,需要确认的地方有这些:
1. 如何实现自动发送微信消息?
2. 如果第一步可以,那如何通过这个按钮调用我写好的自动发消息的脚本?
关于如何发送微信消息这里,我粗略的查了下,发现微信这个坏东西比QQ还要严,压根不存在QQ机器人这类的框架或工具的,网页版微信也早就被抛弃了,没有API可以调用(其实也正常,真要出个能模拟用户的API,黑产不乐疯了)。那么咋办呢?
答案是Python的pyautogui图像自动化库。
哎呀,虽然以前就听说过什么“人生苦短,我用Python”这类的话,但是之前也没咋认真接触过,而这不看则已,一看惊人啊,这个Python的图像自动化库简直神器,完美契合了我的需求,他可以根据你提供的图片,自动在屏幕上寻找相似的地方,然后返回坐标,得到目标的具体坐标了岂不是什么都能干了。
第二个问题则更好解决,找一个可以自定义快捷键的大按钮即可。
然后就在网上找pyautogui这个库的代码,依葫芦画瓢的写了一个打开微信并发送消息的脚本:
# coding=utf8import pyautoguiimport pyperclipimport timecontacter = "订水"msg = '送两桶水,麻烦收到回复'#打开微信location=pyautogui.locateCenterOnScreen('WeChat.png',confidence=0.9)if location is not None: print('打开微信') pyautogui.click(location.x,location.y,clicks=1,interval=0,duration=0.2,button='left') #搜索订水 location=pyautogui.locateCenterOnScreen('search.png',confidence=0.7) if location is not None: print('搜索用户') pyautogui.click(location.x,location.y,clicks=1,interval=0,duration=0.2,button='left') pyperclip.copy(contacter) pyautogui.hotkey('ctrl', 'v') time.sleep(1) #打开聊天窗口,输入文字 location=pyautogui.locateCenterOnScreen('contacter.png',confidence=0.7) if location is not None: print("打开聊天框") pyautogui.click(location.x,location.y,clicks=1,interval=0,duration=0.2,button='left') #time.sleep(1) #焦点在输入框,输入文字 location=pyautogui.locateCenterOnScreen('input.png',confidence=0.7) if location is not None: print("输入文字并发送") pyautogui.click(location.x,location.y,clicks=1,interval=0,duration=0.2,button='left') pyperclip.copy(msg) pyautogui.hotkey('ctrl', 'v') pyautogui.press('enter')print("结束")
关于发送消息的那个地方,这个库就有些力不从心了,因为他能提供的功能是模拟鼠标和键盘的操作,但是打字嘛…特别是用拼音打出汉字,真就得输入拼音然后加空格,通过输入法打出来,而这个办法实际上不是很稳定。
那么什么办法实现汉字的输入呢?那自然是我们最熟悉的Ctrl C、Ctrl V了。
而Python还有个库(pyperclip)就提供了Windows剪贴板的功能,可以将字符串复制进剪贴板,然后就可以调用这个自动化库pyautogui里面的热键方法来触发Ctrl V,将复制到的文字粘贴到目标位置。
至此,代码上的准备工作已经结束,保存后创建一个快捷方式,设置为Ctrl 数字键盘上的减号键。
然后将淘宝来的这个大按钮接到电脑上,设置这个按钮触发上述的快捷键,到此就大功告成了。