這篇文章將使用 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)