Python對話機器人
① 如何優雅的用python玩轉語音聊天機器人
隨性而為,顏值擔當
一系列的關於「優雅」的問題,多到有時都讓人感到厭煩內的地步,我一直容試圖找到一個通解,直到有一天,寡人悟到了,我不敢說這是一個能讓所有人都滿意的答案,但我自己挺滿意的,在我看來決定優雅與否的一大關鍵,是創造力。
太史公「詩三百篇,大抵聖賢發憤之所為作」,推而廣之,多少詩詞、文章、書畫、小說、音樂、戲劇、舞蹈,在欣賞他們的時候,都能感到作品裡充斥著一股「氣」,而「氣」的背後,彷彿能看到作者橫眉怒目咬牙切齒的表情。
韓愈說「大凡物不得其平則鳴」,要真的細細統計一下,憤怒還真有可能是人類藝術創作的第一推動力。
人,永遠是因為留下了些什麼,而不是因為毀掉了什麼,才顯得優雅。
② python qq群機器人怎麼弄
首先第一步就是打開網頁版的qq,打開瀏覽器的開發者模式 這里可以監控所有的請求!
打開登錄界面的的時候
\
會捕捉到一個GET請求
https://ssl.ptlogin2.qq.com/check?uin=10588690&appid=1003903&js_ver=10080&js_type=0&login_sig=YW1ZUUsIU*-6xHtypEqNGoo-VELQ&u1=http%3A%2F%2Fweb2.qq.com%2Floginproxy.html&r=0.5928007187321782其中uin是你的QQ號
返回值是 ptui_checkVC("1','','\x00\x00\x00\x00\x00\xa1\x92\x12');其中1表示需要驗證碼 還有一種返回值 ptui_checkVC('0','!LJV','\x00\x00\x00\x00\x00\xa1\x92\x12') 這種表示是不需要的驗證碼的?
def CheckVerify(self,uin):
check="https://ssl.ptlogin2.qq.com/check?uin={uin}&appid=1003903&js_ver=10080&js_type=0&login_sig=YPD0P*&u1=http%3A%2F%2Fweb2.qq.com%2Floginproxy.html&r=0.8179273759014904"check=check.replace('{uin}',uin)
pattern=re.compile("ptui_checkVC\('(.*)','(.*)','(.*)'\);")result=self.Get(check)
checked= pattern.search(result).groups()
print 'Step1: CheckVerify'
return checked
獲取驗證碼的方法
def GetVerify(self):
#url = 'https://ssl.captcha.qq.com/getimage?&uin='+str(self.QQ)+'&aid=1002101&0.45644426648505' + str(random.randint(10,99))verify="https://ssl.captcha.qq.com/getimage?aid=1003903&r=0.6472875226754695&uin={QQ}&cap_cd=aSD-ZVcNEcozlZUurhNYhp-MBHf4hjbJ"verify=verify.replace('{QQ}',self.QQ)
path= r"c:/verify/1.jpg"
#data = urllib.urlretrieve(url,path)
data = urllib2.urlopen(verify)
localPic =open(r"c:/verify/1.jpg",'wb')
localPic.write(data.read())
localPic.close()
data.close()
輸入用戶名和密碼 還有驗證碼後發送一個GET請求https://ssl.ptlogin2.qq.com/login?u=10588690&p=&verifycode=TEYX&webqq_type=10&remember_uin=1&login2qq=1&aid=1003903&u1=http%3A%2F%2Fweb2.qq.com%2Floginproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&daid=164&from_ui=1&pttype=1&my=&fp=loginerroralert&action=6-14-296574&mibao_css=m_webqq&t=1&g=1&js_type=0&js_ver=10080&login_sig=YW1ZUUsIU*-6xHtypEqNGoo-VELQ&pt_uistyle=5這裡面u代表賬號 p代表密碼 密碼是經過一定演算法加密的 verify是驗證碼加密演算法如下
def PasswordSecret(self,password,v1,v2,md5=True):
if md5==True:
password=self.PCMd5(password).upper()
length=len(password)
temp=''
for i in range(0,length,2):
temp+=r'\x'+password[i:i+2]
return self.PCMd5(self.PCMd5(self.hex2asc(temp)+self.hex2asc(v2)).upper()+v1).upper()#md5加密函數
def PCMd5(self,s):
h=hashlib.md5()
h.update(s)
return h.hexdigest()
#16進制轉字元
def hex2asc(self,s):
_str="".join(s.split(r'\x'))
length=len(_str)
data=''
for i in range(0,length,2):
data+=chr(int(_str[i:i+2],16))
return data
然後是登錄部分代碼
def Login(self,uin,pwd):
#獲取參數
cheked=self.CheckVerify(uin)
#加密密碼
#pwd=self.PasswordSecret(pwd,cheked[1],cheked[2])#pwd=self.PasswordSecret(pwd,r'AAST',r'\x00\x00\x00\x00\x00\xa1\x92\x12')loginurl="https://ssl.ptlogin2.qq.com/login?u={uin}&p={pwd}&verifycode={verify}&webqq_type=10&remember_uin=1&login2qq=1&aid=1003903&u1=http%3A%2F%2Fweb2.qq.com%2Floginproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&daid=164&from_ui=1&pttype=1&my=&fp=loginerroralert&action=4-30-135914&mibao_css=m_webqq&t=1&g=1&js_type=0&js_ver=10080&login_sig=YPD0P*&pt_uistyle=5"loginurl=loginurl.replace('{uin}',uin)
#loginurl=loginurl.replace('{pwd}',pwd)
#loginurl=loginurl.replace('{verify}',cheked[1])#result=Get(loginurl)
if(cheked[0]=="1"):
#下載驗證碼
self.GetVerify()
image = Image.open(r"c:/verify/1.jpg")
image.show()
code=raw_input("verifycode:").strip()
loginurl=loginurl.replace('{verify}',code.upper())pwd=self.PasswordSecret(pwd,r''+code.upper(),cheked[2])#pwd=self.PasswordSecret(pwd,cheked[1],cheked[2])else:
loginurl=loginurl.replace('{verify}',cheked[1])pwd=self.PasswordSecret(pwd,cheked[1],cheked[2])loginurl=loginurl.replace('{pwd}',pwd)
result=self.Get(loginurl,'ssl.ptlogin2.qq.com','https://ui.ptlogin2.qq.com/cgi-bin/login?daid=164&target=self&style=5&mibao_css=m_webqq&appid=1003903&enable_qlogin=0&no_verifyimg=1&s_url=http%3A%2F%2Fweb2.qq.com%2Floginproxy.html&f_url=loginerroralert&strong_login=1&login_state=10&t=20140514001',None)print 'Step2: Login'
pattern=re.compile("ptuiCB\('(.*)','(.*)','(.*)','(.*)','(.*)',\s'(.*)'\);")ret= pattern.search(result).groups()
#獲取必要的cookie 否則第二次登陸會出錯
self.Get(ret[2])
print 'Step3: GetCookie'
for c in self.cj:
if c.name=="ptwebqq":
self.ptwebqq=c.value
return result
登錄成功後伺服器會返回一串json數據
ptuiCB('0','0','http://ptlogin4.web2.qq.com/check_sig?pttype=1&uin=10588690&service=login&nodirect=0&ptsig=*_&s_url=http%3A%2F%2Fweb2.qq.com%2Floginproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&f_url=&ptlang=2052&ptredirect=100&aid=1003903&daid=164&j_later=0&low_login_hour=0®master=0&pt_login_type=1&pt_aid=0&pt_aaid=0&pt_light=0','0','登錄成功!', '小竹');第一個為0 就表示登錄成功了 ,但是這並沒有真正的登錄成功上面的返回值中的url是用來獲取一個關鍵cookie的 那就是ptwebqq然後進行第二次登錄,這次才是真正的登錄
http://d.web2.qq.com/channel/login2
請求如下
Accept: */*
Accept-Encoding: gzip,deflate,sdch
Accept-Language: zh-CN,zh;q=0.8
Connection: keep-alive
Content-Length: 244
Content-Type: application/x-www-form-urlencodedCookie: o_cookie=455910092; RK=fMEaWEZ0Qc; ts_last=web2.qq.com/; ts_refer=www..com/; ts_uid=4588821804; pgv_pvid=914251705; pgv_info=ssid=s3525422600&pgvReferrer=; verifysession=h02LeYrtarkWBZeSu_czkiczeNSNlDm7V1mCm-**; ptui_loginuin=10588690; ptisp=cnc; ptcz=; ptwebqq=; pt2gguin=o0010588690; uin=o0010588690; skey=@gmEO6N2JD; p_uin=o0010588690; p_skey=cZ5*kS-_; pt4_token=1SyuJ39Eq6oKEwEhGIizeg__Host: d.web2.qq.com
Origin: http://d.web2.qq.com
Referer: http://d.web2.qq.com/proxy.html?v=20110331002&callback=1&id=2User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36Form Dataview sourceview URL encoded
r: {"status":"online","ptwebqq":"","passwd_sig":"","clientid":"7963288","psessionid":null}
clientid: 7963288
psessionid: null
其中的ptwebqq就是剛才我們從cookie中獲取的這部分代碼是
def Login2(self):
try:
url="http://d.web2.qq.com/channel/login2"postdata="r=%7B%22status%22%3A%22online%22%2C%22ptwebqq%22%3A%22{$ptwebqq}%22%2C%22passwd_sig%22%3A%22%22%2C%22clientid%22%3A%22{$clientid}%22%2C%22psessionid%22%3Anull%7D&clientid={$clientid}&psessionid=null"postdata=postdata.replace("{$ptwebqq}",self.ptwebqq)postdata=postdata.replace("{$clientid}",str(self.clientid))print 'Step4: Login2'
result=self.Post(url,postdata,QQRobot.HOST[0],QQRobot.REFERER[0],QQRobot.ORIGIN[0])retjson=json.loads(result)
retjson=retjson["result"]
return retjson
except Exception,e:
print "Login2 error "+str(e)
③ python如何讓機器人動
python 是一種編程語言。
裡面有執行循環的功能,如果把某些可以重復的動作用編程回語言描答述出來,並放在循環結構中。就可以不斷重復執行這些動作。
如果只是執行一個動作,可以定義一個布爾值,當這個值為0的時候,表示動作不執行,當這個值為1的時候動作執行。
具體執行是機器人的電機和控制器來控制的。控制器控制電機正轉,反轉,轉速。
④ python能對動作機器人編程嗎
有一定的事實證明,Python語言更適合初學者,大致分為五個階段的學習。Python語言並不會讓初學者感到晦澀,它突破了傳統程序語言入門困難的語法屏障,初學者在學習Python的同時,還能夠鍛煉自己的邏輯思維,同時Python也是入門人工智慧的首選語言。
學習編程並非那麼容易,有的人可能看完了Python語法覺得特別簡單,但再往後看就懵了,因為到後期發現並不能學以致用,理論結合項目才是學好一門編程語言的關鍵。可以選擇報班入門,一般在2W左右,根據自己的實際需要實地了解,可以先在試聽之後,再選擇適合自己的。
⑤ 怎麼在樹莓派上用python做機器人
先在樹莓派上安裝python
$sudoapt-getinstallpython-dev
2.然後更新
$sudoeasy_install-Udistribute
3.安裝python-pip
$sudoapt-getinstallpython-pip
4.安裝python的GPIO庫
$sudopipinstallrpi.gpio
5.然後去下一本書《python指南》就可以開始學習python基礎了。
6.學習完基礎,就可以開始樹莓派的開發了,網上有很多例子,可以開發機器人的語音識別,自動尋路,開關門等等功能。
⑥ 怎樣用 python 編寫一個簡單的 irc 聊天機器人
b站上有教程:回答
http://www.bilibili.com/video/av637038/
⑦ 用python aiml寫一個機器人怎麼完成 學習功能
一般游戲支持自己的語言編寫機器人,比如wow就支持lua,其他游戲各有自己支持的腳本,可能是通用腳本語言,也可能是自己定義的。不知道你想問什麼?
當然,如果你想自動化,對游戲來說並不如測試console或者gui那麼容易。
⑧ python寫微信聊天機器人,求助
研究了一下午一晚上,現在終於實現了用wxpy(版本號0.1.2)自動回復。並且還是能跟你很聊得來的機器人。
做微信聊天機器人,實現步驟:
獲取微信的使用權,即python腳本能控制微信收發信息。
python腳本收到聊天信息後,要對該信息進行處理,返回機器人的回應信息。
- #!/usr/bin/env python3# coding: utf-8from wxpy import *# 掃碼登陸bot = Bot()# 初始化圖靈機器人 (API key 申請: )tuling = Tuling(api_key='***************************')# 自動回復所有文字消息@bot.register(msg_types=TEXT)def auto_reply_all(msg):
- tuling.do_reply(msg)# 開始運行bot.join()
一二兩步要用到wxpy庫里的各種組件來收發信息,監聽微信活動。另外機器人還要用到 圖靈機器人的api
我們先去 圖靈機器人 注冊賬號。
c
創建機器人
選擇自定義,點擊確定
點擊 查看詳情,進入機器人進行設置。
保存API地址,APIkey,後面會用到
點擊運行代碼,運行效果如下。
男頭像是機器人
男頭像是機器人
⑨ 如何用PYTHON設計人機對話程序題
你可以考慮用自然語言分析庫,分析用戶的輸入信息,然後跟輸入做出相應的反饋。