这篇文章将使用 Python 的 urllib 模块 和 tkinter 模块实现一个聊天机器人。
本程序使用的模块有:
import tkinter
from tkinter import*
from tkinter.colorchooser import askcolor
from tkinter import messagebox
from tkinter import scrolledtext
import urllib.request
import urllib.parse
聊天机器人设置
本程序使用了茉莉聊天机器人,通过爬虫爬取回复。
茉莉聊天机器人可以自己申请,申请链接:http://www.itpk.cn/ 申请过程本文不作介绍。
如不想申请,可以用本文的
1.对发送信息进行设置
首先要对发送的信息进行转换,否则无法打开网页,无法爬取。转换方式很简单,如下:
urllib.parse.quote_plus(string)
2.爬取网页
已知茉莉聊天机器人的请求格式如下:
http://i.itpk.cn/api.php?api_key= 申请的ApiKey &api_secret= 密码 &question= 问题
所以,爬虫代码为:
urllib.request.urlopen("http://i.itpk.cn/api.php?api_key=ac00db995a4a8f2a3f3623c82f3cc9d9&api_secret=anaoutswrz1y&question=" + urllib.parse.quote_plus(string)).read().decode("utf-8")
注意:由于网页编码为 utf-8 ,所以要对其解码。
tkinter 窗口设置
tkinter 窗口就不多说了,上代码:
root=Tk()
root.geometry('800x500')
root.title("聊天机器人")
textEdit=scrolledtext.ScrolledText(root,bd=data["message"]["bd"],font=data["message"]["font"],height=1)
textEdit.pack(expand=YES,fill=BOTH)
textEdit.config(state='disabled')
question=Entry(root,bd=data["question"]["bd"],font=data["question"]["font"])
question.pack(fill=BOTH)
send=Button(root,text='发送',command=go,bd=4,font=("华文新魏",18))
send.pack(anchor=SE)
menu = Menu(root)
root.config(menu = menu)
bot = Menu(menu)
bot.add_command(label='程序信息', command=about)
bot.add_command(label='帮助', command=helper)
menu.add_cascade(label= '关于', menu = bot)
root.mainloop()
函数
这里有一些功能函数,代码:
try:
#核心函数,爬虫爬取回复
def chat(string):
import urllib.request
import urllib.parse
return urllib.request.urlopen("http://i.itpk.cn/api.php?api_key=ac00db995a4a8f2a3f3623c82f3cc9d9&api_secret=anaoutswrz1y&question=" + urllib.parse.quote_plus(string)).read().decode("utf-8")
#关于
def about():
messagebox.showinfo('关于聊天机器人','开发者:***\n开发日期:**** 年 ** 月')
#主函数
def go():
q=question.get()
question.delete(0, END)
if q.replace(" ","")=="":
messagebox.showwarning('警告',"不能发送空白信息!")
return
textEdit.config(state='normal')
textEdit.insert(END,"我:"+q+"\n")
textEdit.insert(END,"茉莉:"+chat(q)+"\n")
textEdit.see(END)
textEdit.config(state='disabled')
#帮助
def helper():
messagebox.showinfo('关于聊天机器人','使用说明:\n1.在底下的发送框输入信息;\n2.点击“发送”按钮发送消息;\n3.聊天机器人回复。\n\n注意事项:\n1.程序不能回车发送\n2.使用时请连接网络\n3.回复个别问题可能出现乱码,请见谅')
else:
pass
完整代码
以上就是全部内容了,如需下载源代码请点击此处
(https://download.csdn.net/download/weixin_45462161/12131279)
来源:CSDN
作者:张 浩 然
链接:https://blog.csdn.net/weixin_45462161/article/details/104148166