最近在研究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模块的应用相关推荐

  1. 利用python从网页查找数据_利用Python模拟淘宝的搜索过程并对数据进行可视化分析...

    数据挖掘入门与实战 公众号: datadw 本文讲述如何利用Python模拟淘宝的搜索过程并对搜索结果进行初步的数据可视化分析. 搜索过程的模拟:淘宝的搜索页面有两种形式, 一种形式是, 2019/2 ...

  2. 阿里千亿级购物节背后,淘宝智能客服架构演进之路

    " 淘宝上每天都有上百万的客服在线为上亿的买家提供服务,客服服务平台也从一个简单的分流系统逐步演进到覆盖买家.客服和客服主管三位一体的平台解决方案. 作者简介:淘宝技术部-媒体技术与消费连接 ...

  3. python模拟淘宝登陆_【Python】selenium模拟淘宝登录

    # -*- coding: utf-8 -*- from selenium import webdriver from selenium.webdriver.common.by import By f ...

  4. 弘辽科技:淘宝直播客服应掌握的技巧有哪些?

    原标题<弘辽科技:淘宝直播客服应掌握的技巧有哪些?> 电商平台的发展壮大,衍生了许多与电商或是淘宝相关的职业.淘宝主播是很多人渴望的职业,因为觉得只要看着手机说话就行,但每个行业都是看似简 ...

  5. 零基础带你用python模拟淘宝登录

    经过一段时间的学习,并参考各路大神的文章,总结出一些比较适合小白的网络爬虫的小技巧.跟着笔者的思路,循序渐进,可以慢慢找到一点小感觉. 开发环境 笔者选用的是vs code,轻量级,支持各种插件安装. ...

  6. Python 模拟淘宝客服小蜜自动回复

    首先,新建一个文本文件做准备: 订单|如果您有任何订单问题,可以登录淘宝账号,点击"我的订单",查看订单详情. 物流|如果您有任何订单问题,可以登录淘宝账号,点击"我的订 ...

  7. 淘宝自动客服(旺旺机器人)

    Technorati 标签: 自动客服, 旺旺机器人, 自动回复, 淘宝客服, 机器人 可以自动回答客户的提问,可以自动学习,手动培训和维护对话数据库. 支持基于正则表达式的匹配模板,更灵活更强大. ...

  8. python模拟淘宝登录后上下架商品_Python 淘宝系列(三): 模拟登陆成功后获取购物车信息...

    依然采用IE的F12开发者工具分析抓取到的数据. 关键问题 获取token后,重定向地址的获取 一般网站登录成功后,跳转方式主要有两种:(1)服务器返回的响应头中包含 location header, ...

  9. Python学习笔记18:实操案例十五(记录用户登录日志,模拟淘宝客服自动回复)

    Python学习笔记18:实操案例十五(记录用户登录日志,模拟淘宝客服自动回复) 网课传送门:https://www.bilibili.com/video/BV1Sw411Z779?p=168& ...

最新文章

  1. AutoLayout框架之序言
  2. 一个完整的Windows程序框架
  3. CommonJS,AMD,CMD区别 - 郑星阳 - ITeye博客
  4. WS-Security:使用BinarySecurityToken进行身份验证
  5. 红外探头_问题3: 关于在线近红外光谱仪的探头
  6. 面试问题:SpringMVC的执行流程
  7. 文件操作,列表实例NiceHexSpiral
  8. cf鼠标宏数据大全_游戏鼠标中的跑车,贱驴125M游戏鼠标体验!
  9. 地理空间数据云DEM数据解压失败_解决了
  10. C# 如何在Excel表格中插入、编辑和删除批注
  11. Node.js 第一天
  12. Docker搭建snipe-it全步骤
  13. 小豆社保「社保代缴」短信接口被盗刷解决方案-企业短信防火墙
  14. 操作系统——可变分区空闲空间管理
  15. 管理运筹学软件计算机解咋看,管理运筹学-线性规划的计算机求解ppt课件.ppt
  16. OSChina 周六乱弹 —— 女友是啥子哟?生命的最大负载?
  17. Levy process(列维过程)
  18. 这简直是无敌好嘛!阿里巴巴开源落地可实操项目:网约车+咚宝商城+英雄传说三合一
  19. vue模板字符串中点击事件传递参数
  20. 分数之和(分子分母同分相加)

热门文章

  1. 【Nessus安装、使用】
  2. 优雅的使用MacBook(一些小技巧,你不会知道的)
  3. SEM推广及广告投放数据分析及可视化
  4. php5编译安装常见错误和解决办法集锦
  5. 企业抖音账号流量提升3步法,新号也能过百万播放量
  6. 算法笔记【1】 Kruskal - 克鲁斯卡尔算法
  7. 3.7 使用吸管和颜色取样器工具 [Ps教程]
  8. Win10家庭版实现远程桌面 RDPWraper -解决not supported ,not listening问题
  9. pyecharts 世界地图国家中英文对照表
  10. 网络协议:HTTP的升级改进