【python】模拟淘宝的客服自动回复系统-socket,json,time模块的应用
最近在研究soctet模块的过程中,尝试做个小的练习,第一反应是做个类似qq或者微信的即时聊天,这个需求相对比较简单,采用UDP协议很快就可以实现,为了提高点难度,于是决定尝试模拟淘宝的自动回复功能,决定要实现以下几个功能:
1.客户端输入问题,抓取关键词后自动回复
2.关键词的回复,也就是话术的内容,放到txt文档中,可以根据固定的格式增删改查,比如在txt文档中增加或者减少内容,代码执行不受影响
3.聊天结束后,自动保存聊天记录
先说下代码结构吧:
读取要回复的内容
生成关键词列表
起server服务
开始记录时间
接收信息
while 循环判断关键词
|—如果输入q,bye,再见等直接退出
|—否则,循环匹配关键词列表中的字段
|—如果匹配成功,打印对应字典的值
|—不匹配,打印字典中对应的”其他“对应的值
用到的知识点:
1.socker模块
socket.bind() 将套接字绑定到地址
socker.listen() 开始监听TCP传入连接
s.accept() 接受TCP连接并返回(conn,address)
s.connect(address) 连接到address处的套接字
s.recv(bufsize[,flag]) 接受TCP套接字的数据
s.send(string[,flag]) 发送TCP数据
2.json模块
json.load(f) 从文件中导入数据,因为导入的是字典类型的数据,所以用了json模块
第一步:json导入关键词,生成关键词列表
import json
import socket
import time
print('欢迎光临XXX天猫店,很高兴为您服务\n')
# 导入关键词列表
answer_list=[]
with open('answer','r',encoding='utf-8') as f:dic=json.load(f)
for i in dic:answer_list.append(i)
第二步:server端服务,同时开始记录聊天记录
sk=socket.socket()
sk.bind(('127.0.0.1',8080))
sk.listen()
conn,addr=sk.accept()
conn.send(bytes('客服:有什么能帮助您的?',encoding='utf-8'))
f=open('chat record','a+',encoding='utf-8')
s=time.strftime('%Y:%m:%D %H:%M:%S',time.localtime())
# 记录聊天记录时间
f.write(s+'\n')
f.write('客服:有什么能帮助您的?\n')
第三步:接收客户端数据,开始判断是否退出
while 1:answer=conn.recv(1024).decode('utf-8')f.write(answer+'\n')print(answer)if answer == '客户:q' or answer == '客户:再见' or answer =='客户:bye':conn.send('客服:期待您的再次光临'.encode('utf-8'))print('客服:期待您的再次光临')f.write('客服:期待您的再次光临\n')break
第四步,如果不退出,计算关键词列表的长度,然后循环去匹配,匹配到对应的关键词,到字典中找对应的值输出,并发送客户端,每找一次计数,如果都找完了,没有匹配项,说明没有这个关键词,执行elif的内容
else:num=0for i in range(len(answer_list)):num+=1if answer.count(answer_list[i]) > 0 :print('客服:'+dic[answer_list[i]])f.write('客服:'+dic[answer_list[i]]+'\n')conn.send(bytes('客服:'+dic[answer_list[i]],encoding='utf-8'))breakelif num == len(answer_list):print('客服:'+dic['其他'])f.write('客服:'+dic['其他']+'\n')conn.send(bytes('客服:'+dic['其他'], encoding='utf-8'))
conn.close()
sk.close()
f.close()
第五步,client端,相对比较简单了,只要记清楚了客户端发送和接收的次数,一一对应就可以了
import socket
print('欢迎光临XXX天猫店,很高兴为您服务\n')
answer_list=[]
sk=socket.socket()
sk.connect(('127.0.0.1',8080))
ret=sk.recv(1024).decode('utf-8')
print(ret)
while 1:answer=input('')if answer=='q' or answer == '再见' or answer =='bye':sk.send(('客户:' + answer).encode('utf-8'))ret = sk.recv(1024).decode('utf-8')print(ret)breakelse:sk.send(('客户:'+answer).encode('utf-8'))ret1 = sk.recv(1024).decode('utf-8')print(ret1)
sk.close()
代码放到2个py中,应为用的是TCP协议连接的,所以需要先起server,在启动client端测试。退出后,会自动记录聊天记录
功能都可以实现,但仍然还是有个小bug,就是必须客户输入bye等退出后,聊天记录才会保存,原因就是用了open方法,必须在close之后才会保存,如果程序不退出,就无法保存,也可以用with open()来解决这个问题,但是感觉每次调用太麻烦,就没有这么做!
下次继续优化,求大神指导和各位朋友指教!
【python】模拟淘宝的客服自动回复系统-socket,json,time模块的应用相关推荐
- 利用python从网页查找数据_利用Python模拟淘宝的搜索过程并对数据进行可视化分析...
数据挖掘入门与实战 公众号: datadw 本文讲述如何利用Python模拟淘宝的搜索过程并对搜索结果进行初步的数据可视化分析. 搜索过程的模拟:淘宝的搜索页面有两种形式, 一种形式是, 2019/2 ...
- 阿里千亿级购物节背后,淘宝智能客服架构演进之路
" 淘宝上每天都有上百万的客服在线为上亿的买家提供服务,客服服务平台也从一个简单的分流系统逐步演进到覆盖买家.客服和客服主管三位一体的平台解决方案. 作者简介:淘宝技术部-媒体技术与消费连接 ...
- python模拟淘宝登陆_【Python】selenium模拟淘宝登录
# -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By f ...
- 弘辽科技:淘宝直播客服应掌握的技巧有哪些?
原标题<弘辽科技:淘宝直播客服应掌握的技巧有哪些?> 电商平台的发展壮大,衍生了许多与电商或是淘宝相关的职业.淘宝主播是很多人渴望的职业,因为觉得只要看着手机说话就行,但每个行业都是看似简 ...
- 零基础带你用python模拟淘宝登录
经过一段时间的学习,并参考各路大神的文章,总结出一些比较适合小白的网络爬虫的小技巧.跟着笔者的思路,循序渐进,可以慢慢找到一点小感觉. 开发环境 笔者选用的是vs code,轻量级,支持各种插件安装. ...
- Python 模拟淘宝客服小蜜自动回复
首先,新建一个文本文件做准备: 订单|如果您有任何订单问题,可以登录淘宝账号,点击"我的订单",查看订单详情. 物流|如果您有任何订单问题,可以登录淘宝账号,点击"我的订 ...
- 淘宝自动客服(旺旺机器人)
Technorati 标签: 自动客服, 旺旺机器人, 自动回复, 淘宝客服, 机器人 可以自动回答客户的提问,可以自动学习,手动培训和维护对话数据库. 支持基于正则表达式的匹配模板,更灵活更强大. ...
- python模拟淘宝登录后上下架商品_Python 淘宝系列(三): 模拟登陆成功后获取购物车信息...
依然采用IE的F12开发者工具分析抓取到的数据. 关键问题 获取token后,重定向地址的获取 一般网站登录成功后,跳转方式主要有两种:(1)服务器返回的响应头中包含 location header, ...
- Python学习笔记18:实操案例十五(记录用户登录日志,模拟淘宝客服自动回复)
Python学习笔记18:实操案例十五(记录用户登录日志,模拟淘宝客服自动回复) 网课传送门:https://www.bilibili.com/video/BV1Sw411Z779?p=168& ...
最新文章
- AutoLayout框架之序言
- 一个完整的Windows程序框架
- CommonJS,AMD,CMD区别 - 郑星阳 - ITeye博客
- WS-Security:使用BinarySecurityToken进行身份验证
- 红外探头_问题3: 关于在线近红外光谱仪的探头
- 面试问题:SpringMVC的执行流程
- 文件操作,列表实例NiceHexSpiral
- cf鼠标宏数据大全_游戏鼠标中的跑车,贱驴125M游戏鼠标体验!
- 地理空间数据云DEM数据解压失败_解决了
- C# 如何在Excel表格中插入、编辑和删除批注
- Node.js 第一天
- Docker搭建snipe-it全步骤
- 小豆社保「社保代缴」短信接口被盗刷解决方案-企业短信防火墙
- 操作系统——可变分区空闲空间管理
- 管理运筹学软件计算机解咋看,管理运筹学-线性规划的计算机求解ppt课件.ppt
- OSChina 周六乱弹 —— 女友是啥子哟?生命的最大负载?
- Levy process(列维过程)
- 这简直是无敌好嘛!阿里巴巴开源落地可实操项目:网约车+咚宝商城+英雄传说三合一
- vue模板字符串中点击事件传递参数
- 分数之和(分子分母同分相加)