A. python 能抓去微信的聊天記錄嗎
1. 微信把一個人刪除以後,只要對方未刪除對方手機聊天記錄,對方還能看見我們之前的聊天記錄。 2. 微信刪除好友是單向的行為,刪除好友,你仍會在對方好友列表存在,除非對方主動刪除。 3. 刪除好友後,對方將從你好友列表刪除,你和對方聊天即...
B. python將微信聊天內容復制到word文檔
python 有一個第三方庫 pywx 你可以去看看,了解一下,然後匹配特定聊天記錄的話可以試著用正則試試
望採納
C. 有關Python編聊天軟體
當然有TCP啦,還有那個聊天記錄,能不能換種實現方式
D. python多人聊天軟體只有最後進入的才能看見別人的幾率
1、單或多客戶端使用 telnet 登陸服務端 ( 可遠程 ) 進行會話
2、服務端實現登陸、注冊、退出功能
3、客戶端發送的消息會被廣播到已經登陸的其他用戶界面
4、連接到服務端後,可以執行相應的程序指令!
E. 怎麼用python做一個聊天室不帶注釋,謝謝!
問題太大了兄弟,你怎麼不說怎麼做個淘寶京東呢。想要做聊天室,就要了解聊天室需要的技術,建議你看下python socket編程相關,一步一步來。比如先做一個無界面一問一答的雙人聊天室,然後做實時問答版的,在做多人實時聊天室版,再加上界面不就ok了,之後人多了系統扛不住了,在考慮如何提高系統性能。飯是一口一口吃,路是一步一步走。
F. 求一個能夠用Python寫一個網路在線聊天工具牛人
250積分?我需要RMB
1 首先要明白聊天工具 = 客戶端 + 服務端(所以得寫倆)
1.5 規定好數據傳輸的格式
2 隨後你需要指定數據傳輸的協議:TCP,UDP。。。。。
3 聊天工具往往伴隨這文件傳輸,所以你還需要准備存儲文件的資料庫
4 你需要一個UI
5 我需要RMB
G. 有關python聊天程序
代碼簡單,直接看代碼吧:
復制代碼代碼如下:
import socket
import threading
import re
#import Tkinter
def ser():
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(('',33333))
s.listen(1)
conn,addr=s.accept()
while True:
print '[%s:%d] send a message to me: %s'%(addr[0],addr[1],conn.recv(1024))
s.close()
def clt():
c=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ip_pattern=re.compile(r'^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$')
while True:
ip=raw_input('Input the Server\'s IPv4 address:')
ip_match=ip_pattern.match(ip)
if ip_match:
break
c.connect((ip,33333))
while True:
sms=raw_input('Input the message you want to send:')
c.sendall(sms)
c.close()
if __name__=="__main__":
ser=threading.Thread(target=ser)
clt=threading.Thread(target=clt)
ser.start()
clt.start()
ser.join()
clt.join()
H. 如何用python編寫一個聊天室
1.伺服器類
首先需要一個聊天伺服器,這里繼承asyncore的dispatcher類來實現,代碼如下
class ChatServer(dispatcher):
"""
聊天伺服器
"""
def __init__(self, port):
dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.set_reuse_addr()
self.bind(('', port))
self.listen(5)
self.users = {}
self.main_room = ChatRoom(self)
def handle_accept(self):
conn, addr = self.accept()
ChatSession(self, conn)
2.會話類
有了伺服器類還需要能維護每個用戶的連接會話,這里繼承asynchat的async_chat類來實現,代碼如下:
class ChatSession(async_chat):
"""
負責和單用戶通信
"""
def __init__(self, server, sock):
async_chat.__init__(self, sock)
self.server = server
self.set_terminator('n')
self.data = []
self.name = None
self.enter(LoginRoom(server))
def enter(self, room):
'從當前房間移除自身,然後添加到指定房間'
try:
cur = self.room
except AttributeError:
pass
else:
cur.remove(self)
self.room = room
room.add(self)
def collect_incoming_data(self, data):
'接受客戶端的數據'
self.data.append(data)
def found_terminator(self):
'當客戶端的一條數據結束時的處理'
line = ''.join(self.data)
self.data = []
try:
self.room.handle(self, line)
except EndSession:
self.handle_close()
def handle_close(self):
async_chat.handle_close(self)
self.enter(LogoutRoom(self.server))
3.命令解釋器
現在就需要一個命令解釋器能夠解釋用戶的命令,例如登錄、查詢在線用戶和發消息等,代碼如下:
class CommandHandler:
"""
命令處理類
"""
def unknown(self, session, cmd):
'響應未知命令'
session.push('Unknown command: %sn' % cmd)
def handle(self, session, line):
'命令處理'
if not line.strip():
return
parts = line.split(' ', 1)
cmd = parts[0]
try:
line = parts[1].strip()
except IndexError:
line = ''
meth = getattr(self, 'do_' + cmd, None)
try:
meth(session, line)
except TypeError:
self.unknown(session, cmd)
4.房間
接下來就需要實現聊天室的房間了,這里我們定義了三種房間,分別是用戶剛登錄時的房間、聊天的房間和退出登錄的房間,這三種房間都有一個公共的父類,代碼如下:
class Room(CommandHandler):
"""
包含多個用戶的環境,負責基本的命令處理和廣播
"""
def __init__(self, server):
self.server = server
self.sessions = []
def add(self, session):
'一個用戶進入房間'
self.sessions.append(session)
def remove(self, session):
'一個用戶離開房間'
self.sessions.remove(session)
def broadcast(self, line):
'向所有的用戶發送指定消息'
for session in self.sessions:
session.push(line)
def do_logout(self, session, line):
'退出房間'
raise EndSession
class LoginRoom(Room):
"""
剛登錄的用戶的房間
"""
def add(self, session):
'用戶連接成功的回應'
Room.add(self, session)
session.push('Connect Success')
def do_login(self, session, line):
'登錄命令處理'
name = line.strip()
if not name:
session.push('UserName Empty')
elif name in self.server.users:
session.push('UserName Exist')
else:
session.name = name
session.enter(self.server.main_room)
class ChatRoom(Room):
"""
聊天用的房間
"""
def add(self, session):
'廣播新用戶進入'
session.push('Login Success')
self.broadcast(session.name + ' has entered the room.n')
self.server.users[session.name] = session
Room.add(self, session)
def remove(self, session):
'廣播用戶離開'
Room.remove(self, session)
self.broadcast(session.name + ' has left the room.n')
def do_say(self, session, line):
'客戶端發送消息'
self.broadcast(session.name + ': ' + line + 'n')
def do_look(self, session, line):
'查看在線用戶'
session.push('Online Users:n')
for other in self.sessions:
session.push(other.name + 'n')
class LogoutRoom(Room):
"""
用戶退出時的房間
"""
def add(self, session):
'從伺服器中移除'
try:
del self.server.users[session.name]
except KeyError:
pass
5.伺服器端完整代碼
#!/usr/bin/python
# encoding: utf-8
from asyncore import dispatcher
from asynchat import async_chat
import socket, asyncore
PORT = 6666 #埠
class EndSession(Exception):
"""
自定義會話結束時的異常
"""
pass
class CommandHandler:
"""
命令處理類
"""
def unknown(self, session, cmd):
'響應未知命令'
session.push('Unknown command: %sn' % cmd)
def handle(self, session, line):
'命令處理'
if not line.strip():
return
parts = line.split(' ', 1)
cmd = parts[0]
try:
line = parts[1].strip()
except IndexError:
line = ''
meth = getattr(self, 'do_' + cmd, None)
try:
meth(session, line)
except TypeError:
self.unknown(session, cmd)
class Room(CommandHandler):
"""
包含多個用戶的環境,負責基本的命令處理和廣播
"""
def __init__(self, server):
self.server = server
self.sessions = []
def add(self, session):
'一個用戶進入房間'
self.sessions.append(session)
def remove(self, session):
'一個用戶離開房間'
self.sessions.remove(session)
def broadcast(self, line):
'向所有的用戶發送指定消息'
for session in self.sessions:
session.push(line)
def do_logout(self, session, line):
'退出房間'
raise EndSession
class LoginRoom(Room):
"""
剛登錄的用戶的房間
"""
def add(self, session):
'用戶連接成功的回應'
Room.add(self, session)
session.push('Connect Success')
def do_login(self, session, line):
'登錄命令處理'
name = line.strip()
if not name:
session.push('UserName Empty')
elif name in self.server.users:
session.push('UserName Exist')
else:
session.name = name
session.enter(self.server.main_room)
class ChatRoom(Room):
"""
聊天用的房間
"""
def add(self, session):
'廣播新用戶進入'
session.push('Login Success')
self.broadcast(session.name + ' has entered the room.n')
self.server.users[session.name] = session
Room.add(self, session)
def remove(self, session):
'廣播用戶離開'
Room.remove(self, session)
self.broadcast(session.name + ' has left the room.n')
def do_say(self, session, line):
'客戶端發送消息'
self.broadcast(session.name + ': ' + line + 'n')
def do_look(self, session, line):
'查看在線用戶'
session.push('Online Users:n')
for other in self.sessions:
session.push(other.name + 'n')
class LogoutRoom(Room):
"""
用戶退出時的房間
"""
def add(self, session):
'從伺服器中移除'
try:
del self.server.users[session.name]
except KeyError:
pass
class ChatSession(async_chat):
"""
負責和單用戶通信
"""
def __init__(self, server, sock):
async_chat.__init__(self, sock)
self.server = server
self.set_terminator('n')
self.data = []
self.name = None
self.enter(LoginRoom(server))
def enter(self, room):
'從當前房間移除自身,然後添加到指定房間'
try:
cur = self.room
except AttributeError:
pass
else:
cur.remove(self)
self.room = room
room.add(self)
def collect_incoming_data(self, data):
'接受客戶端的數據'
self.data.append(data)
def found_terminator(self):
'當客戶端的一條數據結束時的處理'
line = ''.join(self.data)
self.data = []
try:
self.room.handle(self, line)
except EndSession:
self.handle_close()
def handle_close(self):
async_chat.handle_close(self)
self.enter(LogoutRoom(self.server))
class ChatServer(dispatcher):
"""
聊天伺服器
"""
def __init__(self, port):
dispatcher.__init__(self)
self.create_socket(socket.AF_INET, socket.SOCK_STREAM)
self.set_reuse_addr()
self.bind(('', port))
self.listen(5)
self.users = {}
self.main_room = ChatRoom(self)
def handle_accept(self):
conn, addr = self.accept()
ChatSession(self, conn)
if __name__ == '__main__':
s = ChatServer(PORT)
try:
asyncore.loop()
except KeyboardInterrupt:
print
I. 如何用Python編寫一個聊天室
#!/usr/bin/python
#encoding:utf-8
fromasyncoreimportdispatcher
fromasynchatimportasync_chat
importsocket,asyncore
PORT=6666#埠
classEndSession(Exception):
"""
自定義會話結束時的異常
"""
pass
classCommandHandler:
"""
命令處理類
"""
defunknown(self,session,cmd):
'響應未知命令'
session.push('Unknowncommand:%sn'%cmd)
defhandle(self,session,line):
'命令處理'
ifnotline.strip():
return
parts=line.split('',1)
cmd=parts[0]
try:
line=parts[1].strip()
exceptIndexError:
line=''
meth=getattr(self,'do_'+cmd,None)
try:
meth(session,line)
exceptTypeError:
self.unknown(session,cmd)
classRoom(CommandHandler):
"""
包含多個用戶的環境,負責基本的命令處理和廣播
"""
def__init__(self,server):
self.server=server
self.sessions=[]
defadd(self,session):
'一個用戶進入房間'
self.sessions.append(session)
defremove(self,session):
'一個用戶離開房間'
self.sessions.remove(session)
defbroadcast(self,line):
'向所有的用戶發送指定消息'
forsessioninself.sessions:
session.push(line)
defdo_logout(self,session,line):
'退出房間'
raiseEndSession
classLoginRoom(Room):
"""
剛登錄的用戶的房間
"""
defadd(self,session):
'用戶連接成功的回應'
Room.add(self,session)
session.push('ConnectSuccess')
defdo_login(self,session,line):
'登錄命令處理'
name=line.strip()
ifnotname:
session.push('UserNameEmpty')
elifnameinself.server.users:
session.push('UserNameExist')
else:
session.name=name
session.enter(self.server.main_room)
classChatRoom(Room):
"""
聊天用的房間
"""
defadd(self,session):
'廣播新用戶進入'
session.push('LoginSuccess')
self.broadcast(session.name+'hasenteredtheroom.n')
self.server.users[session.name]=session
Room.add(self,session)
defremove(self,session):
'廣播用戶離開'
Room.remove(self,session)
self.broadcast(session.name+'haslefttheroom.n')
defdo_say(self,session,line):
'客戶端發送消息'
self.broadcast(session.name+':'+line+'n')
defdo_look(self,session,line):
'查看在線用戶'
session.push('OnlineUsers:n')
forotherinself.sessions:
session.push(other.name+'n')
classLogoutRoom(Room):
"""
用戶退出時的房間
"""
defadd(self,session):
'從伺服器中移除'
try:
delself.server.users[session.name]
exceptKeyError:
pass
classChatSession(async_chat):
"""
負責和單用戶通信
"""
def__init__(self,server,sock):
async_chat.__init__(self,sock)
self.server=server
self.set_terminator('n')
self.data=[]
self.name=None
self.enter(LoginRoom(server))
defenter(self,room):
'從當前房間移除自身,然後添加到指定房間'
try:
cur=self.room
exceptAttributeError:
pass
else:
cur.remove(self)
self.room=room
room.add(self)
defcollect_incoming_data(self,data):
'接受客戶端的數據'
self.data.append(data)
deffound_terminator(self):
'當客戶端的一條數據結束時的處理'
line=''.join(self.data)
self.data=[]
try:
self.room.handle(self,line)
exceptEndSession:
self.handle_close()
defhandle_close(self):
async_chat.handle_close(self)
self.enter(LogoutRoom(self.server))
classChatServer(dispatcher):
"""
聊天伺服器
"""
def__init__(self,port):
dispatcher.__init__(self)
self.create_socket(socket.AF_INET,socket.SOCK_STREAM)
self.set_reuse_addr()
self.bind(('',port))
self.listen(5)
self.users={}
self.main_room=ChatRoom(self)
defhandle_accept(self):
conn,addr=self.accept()
ChatSession(self,conn)
if__name__=='__main__':
s=ChatServer(PORT)
try:
asyncore.loop()
exceptKeyboardInterrupt: