python实现微信好友列表获取、微信好友群成员列表提取导出

时间: 作者: 点击量:
python实现微信好友列表获取、微信好友群成员列表提取导出。轻松实现:微信好友列表,微信好友列表获取,微信好友提取,微信好友导出

直接上代码

-- coding: utf-8 --
“”” 
Module implementing MainWindow. 
“”“
 
from PyQt5.QtCore import QThread, pyqtSignal, Qt, pyqtSlot 
from PyQt5.QtWidgets import * 
from PyQt5 import QtGui
 
from Ui_cronSendMessage import Ui_MainWindow
 
import sys 
import itchat 
from itchat.content import * 
import datetime 
import time 
import os 
import requests 
import json 
import re 
from urllib.request import urlretrieve 
import traceback
 
current_path = os.path.dirname(os.path.abspath(file))

登陆微信

class LoginWechat(QThread): 
# 自定义一个信号 
finished_signal = pyqtSignal(object)

def __init__(self, parent=None, label=None, scroll_widget_layout=None, refresh_button=None, exit_button=None):
    super().__init__(parent)
    self.l = label
    self.scroll_widget_layout = scroll_widget_layout
    self.refresh_button = refresh_button
    self.exit_button = exit_button
 
# 在控制台中写入信息
def outputWritten(self, text=None):
    cursor = self.l.textCursor()
    cursor.movePosition(QtGui.QTextCursor.End)
    cursor.insertText(text)
    self.l.setTextCursor(cursor)
    self.l.ensureCursorVisible()
 
# 获取uuid
def open_qr(self):
    for get_count in range(1):
        self.outputWritten('获取uuid中……\n')
        uuid = itchat.get_QRuuid()
        while uuid is None:
            uuid = itchat.get_QRuuid()
            time.sleep(1)
        self.outputWritten('成功获取uuid\n')
        if itchat.get_QR(uuid, picDir=r'%s' % os.path.join(current_path, 'qrcode.jpg')):
            break
        elif get_count >= 1:
            self.outputWritten("获取二维码出错,请重启程序\n")
            sys.exit()
    return uuid
 
# 二维码登陆
def login_wechat(self):
    try:
        uuid = self.open_qr()
        self.outputWritten("请扫描二维码\n")
        waitForConfirm = False
        while 1:
            status = itchat.check_login(uuid)
            if status == '200':
                break
            elif status == '201':
                if waitForConfirm:
                    self.outputWritten('请进行确认\n')
                    waitForConfirm = True
            elif status == '408':
                self.outputWritten('重新加载二维码\n')
                time.sleep(3)
                uuid = self.open_qr()
                waitForConfirm = False
        userInfo = itchat.web_init()
        # print(userInfo)
        itchat.show_mobile_login()
        print('itchat.show_mobile_login() 执行完成!')
        # itchat.get_friends(True)
        itchat.get_friends()
        print('itchat.get_friends(update=True)[0:] 执行完成!')
        self.outputWritten('登陆成功!账号为:%s\n' % userInfo['User']['NickName'])
        itchat.start_receiving()
        print('itchat.start_receiving() 执行完成!')
        self.refresh_button.setText("已登录:{}".format(userInfo['User']['NickName']))
        self.exit_button.setEnabled(True)
    except Exception as e:
        print("登录出错:", e)
        self.outputWritten('登陆出错:{}\n'.format(e))
 
    try:
        # 获取群聊列表
        chatrooms = itchat.get_chatrooms()
        print('chatrooms = itchat.get_chatrooms() 执行完成!')
        print(type(chatrooms))
        #return chatrooms
    except Exception as e:
        self.outputWritten("获取群聊列表出错:{}\n".format(e))
 
 
    try:
        # 获取好友列表
        friends = itchat.get_friends()
        print('friends = itchat.get_friends() 执行完成!')
        print(type(friends))
        #return friends
    except Exception as e:
        self.outputWritten("获取群聊列表出错:{}\n".format(e))
 
    try:
        # 获取好友列表
        mps = itchat.get_mps()
        print('mps = itchat.get_mps() 执行完成!')
        print(type(mps))
        #return mps
    except Exception as e:
        self.outputWritten("获取群聊列表出错:{}\n".format(e))
 
    if chatrooms and friends and mps:
        return [chatrooms, friends, mps]
 
def run(self):
    try:
        self.refresh_button.setEnabled(False)
        self.exit_button.setEnabled(True)
        self.finished_signal.emit(self.login_wechat())
    except Exception as e:
        self.outputWritten("运行登录线程出错:{}\n".format(e))
 

class MainWindow(QMainWindow, Ui_MainWindow): 
“”” 
Class documentation goes here. 
“”” 
def init(self, parent=None): 
“”” 
Constructor

 

    @param parent reference to the parent widget
    @type QWidget
    """
    super(MainWindow, self).__init__(parent)
    self.setupUi(self)
 
# 在控制台中写入信息
def outputWritten(self, text=None):
    # 获取文本框中文本的游标
    cursor = self.textEdit.textCursor()
    # 将游标位置移动到当前文本的结束处
    cursor.movePosition(QtGui.QTextCursor.End)
    # 写入文本
    cursor.insertText(text)
    # 设置文本的游标为创建了cursor
    self.textEdit.setTextCursor(cursor)
    self.textEdit.ensureCursorVisible()
 
'''
        ItChat登陆功能
    '''
 
@staticmethod
def _show_message(message):
    print('{}'.format(message))
 
# 获取群聊复选框选择状态
def checkChatRoom(self, state):
    try:
        checkBox = self.sender()
        if state == Qt.Unchecked:
            self.outputWritten(u'取消选择了{0}: {1}\n'.format(checkBox.id_, checkBox.text()))
            self.chatroom_list.remove(self.chatroom_dict[checkBox.text()])
        elif state == Qt.Checked:
            self.outputWritten(u'选择了{0}: {1}\n'.format(checkBox.id_, checkBox.text()))
            self.chatroom_list.append(self.chatroom_dict[checkBox.text()])
    except Exception as e:
        self.outputWritten("获取群聊选择状态失败:{}\n".format(e))
 
# 生成群聊列表
def generate_chatroom(self, chatrooms):
    # 清空原有群里列表
    while self.gridLayout.count():
        item = self.gridLayout.takeAt(0)
        widget = item.widget()
        widget.deleteLater()
 
    chatrooms = chatrooms[0]
    self.chatroom_dict = dict()
    try:
        for c, i in zip(chatrooms, range(len(chatrooms))):
            print(c['NickName'], c['UserName'])
            checkbox = QCheckBox(c['NickName'])
            checkbox.id_ = i
            self.chatroom_dict[c['NickName']] = c['UserName']
            checkbox.stateChanged.connect(self.checkChatRoom)  # 1
            self.gridLayout.addWidget(checkbox)
            #self.horizontalLayout_3.addWidget(self.checkBox_2)
        self.outputWritten("生成群聊成功!\n")
    except Exception as e:
        print(e)
 
# 生成好友列表
def generate_friends(self, chatrooms):
    # 清空原有群里列表
    while self.verticalLayout_4.count():
        item = self.verticalLayout_4.takeAt(0)
        widget = item.widget()
        widget.deleteLater()
    chatrooms = chatrooms[1]
    self.chatroom_dict = dict()
    try:
        for c, i in zip(chatrooms, range(len(chatrooms))):
            print(c['NickName'], c['UserName'])
            checkbox = QCheckBox(c['NickName'])
            checkbox.id_ = i
            self.chatroom_dict[c['NickName']] = c['UserName']
            checkbox.stateChanged.connect(self.checkChatRoom)  # 1
            self.verticalLayout_4.addWidget(checkbox)
            #self.horizontalLayout_3.addWidget(self.checkBox_2)
        self.outputWritten("生成好友成功!\n")
    except Exception as e:
        print(e)
 
# 生成公众号列表
def generate_mps(self, chatrooms):
    # 清空原有群里列表
    while self.verticalLayout_6.count():
        item = self.verticalLayout_6.takeAt(0)
        widget = item.widget()
        widget.deleteLater()
    chatrooms = chatrooms[2]
    self.chatroom_dict = dict()
    try:
        for c, i in zip(chatrooms, range(len(chatrooms))):
            print(c['NickName'], c['UserName'])
            checkbox = QCheckBox(c['NickName'])
            checkbox.id_ = i
            self.chatroom_dict[c['NickName']] = c['UserName']
            checkbox.stateChanged.connect(self.checkChatRoom)  # 1
            self.verticalLayout_6.addWidget(checkbox)
            #self.horizontalLayout_3.addWidget(self.checkBox_2)
        self.outputWritten("生成公众号成功!\n")
    except Exception as e:
        print(e)
 
@pyqtSlot()
def on_pushButton_clicked(self):
    """
    # 登录微信 - 线程
    """
 
    # 登录微信 - 线程
    try:
        self.login_wechat_thread = LoginWechat(
            label=self.textEdit,
            scroll_widget_layout=self.verticalLayout,
            refresh_button=self.pushButton,
            exit_button=self.pushButton_2,
        )
        self.login_wechat_thread.finished_signal.connect(self.generate_chatroom)
        self.login_wechat_thread.finished_signal.connect(self.generate_friends)
        self.login_wechat_thread.finished_signal.connect(self.generate_mps)
        #self.login_wechat_thread.finished_signal.connect(self.generate_chatroom)
        self.login_wechat_thread.start()
    except Exception as e:
        print("执行登录线程出错:", e)
        self.outputWritten("执行登录线程出错:{}\n".format(e))
 
@pyqtSlot()
def on_pushButton_2_clicked(self):
    """
    注销按钮
    """
    # 设置登录按钮为激活状态
    self.pushButton.setEnabled(True)
    # 在文本控制台中输入
    self.outputWritten("退出微信登录\n")
    # 注销微信登录
    itchat.logout()
    # 设置注销按钮为禁用状态
    self.pushButton_2.setEnabled(False)
    # 更改登陆按钮
    self.pushButton.setText("登录")
 
if name == ‘main‘: 
app = QApplication(sys.argv) 
ui = MainWindow() 
ui.show() 
sys.exit(app.exec_())
 
这是UI代码
 
-- coding: utf-8 --
Form implementation generated from reading ui file ‘E:\python\taobaoKe\cronSendMessage\cronSendMessage.ui’
#
 
Created by: PyQt5 UI code generator 5.11.2
#
 
WARNING! All changes made in this file will be lost!
from PyQt5 import QtCore, QtGui, QtWidgets
 
class Ui_MainWindow(object): 
def setupUi(self, MainWindow): 
MainWindow.setObjectName(“MainWindow”) 
MainWindow.resize(905, 600) 
self.centralWidget = QtWidgets.QWidget(MainWindow) 
self.centralWidget.setObjectName(“centralWidget”) 
self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.centralWidget) 
self.verticalLayout_3.setObjectName(“verticalLayout_3”) 
self.tabWidget = QtWidgets.QTabWidget(self.centralWidget) 
self.tabWidget.setObjectName(“tabWidget”) 
self.tab = QtWidgets.QWidget() 
self.tab.setObjectName(“tab”) 
self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.tab) 
self.verticalLayout_4.setObjectName(“verticalLayout_4”) 
self.checkBox = QtWidgets.QCheckBox(self.tab) 
self.checkBox.setObjectName(“checkBox”) 
self.verticalLayout_4.addWidget(self.checkBox) 
self.tabWidget.addTab(self.tab, “”) 
self.tab_2 = QtWidgets.QWidget() 
self.tab_2.setObjectName(“tab_2”) 
self.gridLayout = QtWidgets.QGridLayout(self.tab_2) 
self.gridLayout.setObjectName(“gridLayout”) 
self.checkBox_2 = QtWidgets.QCheckBox(self.tab_2) 
self.checkBox_2.setObjectName(“checkBox_2”) 
self.gridLayout.addWidget(self.checkBox_2, 0, 0, 1, 1) 
self.tabWidget.addTab(self.tab_2, “”) 
self.tab_3 = QtWidgets.QWidget() 
self.tab_3.setObjectName(“tab_3”) 
self.verticalLayout_6 = QtWidgets.QVBoxLayout(self.tab_3) 
self.verticalLayout_6.setObjectName(“verticalLayout_6”) 
self.checkBox_3 = QtWidgets.QCheckBox(self.tab_3) 
self.checkBox_3.setObjectName(“checkBox_3”) 
self.verticalLayout_6.addWidget(self.checkBox_3) 
self.tabWidget.addTab(self.tab_3, “”) 
self.verticalLayout_3.addWidget(self.tabWidget) 
self.groupBox = QtWidgets.QGroupBox(self.centralWidget) 
self.groupBox.setObjectName(“groupBox”) 
self.verticalLayout = QtWidgets.QVBoxLayout(self.groupBox) 
self.verticalLayout.setObjectName(“verticalLayout”) 
self.pushButton = QtWidgets.QPushButton(self.groupBox) 
self.pushButton.setObjectName(“pushButton”) 
self.verticalLayout.addWidget(self.pushButton) 
self.pushButton_2 = QtWidgets.QPushButton(self.groupBox) 
self.pushButton_2.setObjectName(“pushButton_2”) 
self.verticalLayout.addWidget(self.pushButton_2) 
self.verticalLayout_3.addWidget(self.groupBox) 
self.groupBox_5 = QtWidgets.QGroupBox(self.centralWidget) 
self.groupBox_5.setObjectName(“groupBox_5”) 
self.verticalLayout_2 = QtWidgets.QVBoxLayout(self.groupBox_5) 
self.verticalLayout_2.setObjectName(“verticalLayout_2”) 
self.textEdit = QtWidgets.QTextEdit(self.groupBox_5) 
self.textEdit.setObjectName(“textEdit”) 
self.verticalLayout_2.addWidget(self.textEdit) 
self.verticalLayout_3.addWidget(self.groupBox_5) 
self.verticalLayout_3.setStretch(0, 80) 
self.verticalLayout_3.setStretch(1, 10) 
self.verticalLayout_3.setStretch(2, 50) 
MainWindow.setCentralWidget(self.centralWidget)

 

    self.retranslateUi(MainWindow)
    self.tabWidget.setCurrentIndex(2)
    QtCore.QMetaObject.connectSlotsByName(MainWindow)
 
def retranslateUi(self, MainWindow):
    _translate = QtCore.QCoreApplication.translate
    MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
    self.checkBox.setText(_translate("MainWindow", "CheckBox"))
    self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "好友列表"))
    self.checkBox_2.setText(_translate("MainWindow", "group"))
    self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "群聊列表"))
    self.checkBox_3.setText(_translate("MainWindow", "CheckBox"))
    self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_3), _translate("MainWindow", "公众号列表"))
    self.groupBox.setTitle(_translate("MainWindow", "登陆微信"))
    self.pushButton.setText(_translate("MainWindow", "登陆"))
    self.pushButton_2.setText(_translate("MainWindow", "注销"))
    self.groupBox_5.setTitle(_translate("MainWindow", "消息区"))
 
if name == “main“: 
import sys 
app = QtWidgets.QApplication(sys.argv) 
MainWindow = QtWidgets.QMainWindow() 
ui = Ui_MainWindow() 
ui.setupUi(MainWindow) 
MainWindow.show() 
sys.exit(app.exec_())
 
运行操作界面如下 


微信好友列表,微信好友列表获取,微信好友提取,微信好友导出

l还可以实现:qq好友提取、qq好友列表提取、python微信投票


微信数据获取
微信好友数据爬去分析
获取别人微信好友列表
哪里获取微信好友
微信网页版获取好友列表
如何获取别人微信好友列表
获取别人微信好友列表
获取微信好友列表
提取他人微信好友
pc微信获取好友列表
提取他人微信好友
获取群成员列表接口
微信获取数据
获取别人微信好友列表
根据微信用户名密码获取好友列表
爬虫微信个人信息
微信获取好友
微信数据提取对方好友
php如何获取微信通讯录
爬虫分析微信好友
微信对外提供了获取好友列表的接口吗
获取微信好友
获取微信好友列表
获取别人微信好友列表
androidd获取微信好友列表
微信导出好友列表
提取微信好友微信号
获取对方微信所有好友
获取微信好友列表
获取对方微信所有好友
获取微信好友列表
提取他人微信好友名单
批量导出微信好友列表
查看对方微信好友列表
如何用爬虫找到微信用户

上一篇:python实现微信好友列表获取、微信好友群成员列表提取导出

下一篇:微信好友分析之获取好友信息,微信好友提取-提取微信好友列表

注册体验: