Python使用中錯誤(持續更新.....)
阿新 • • 發佈:2017-09-15
clas div req mage 技術分享 執行 pan pytho ida
1、在使用requests發送請求,響應數據轉成json提示,沒有可解碼的json
解決辦法:
這是由於,發送請求的數據,存在錯誤,響應出錯比如404 400,所以找不到可以解碼的json
示例如下:
postdata = ‘‘‘{‘userName‘:‘13718651996‘, ‘passwd‘:‘yhlxxxx870120‘, ‘validateCode‘:‘abc‘, ‘rememberMe‘:‘true‘}‘‘‘ url = ‘https://secure.elong.com/passport/ajax/elongLogin‘ response= Session().post(url,data=postdata) print(response.json())
其實從圖上很明顯能看出問題,因為postdata是字符串類型,不是dict字典
如上圖代碼如果執行報如下錯誤:
解決辦法,eval()函數將字符串,轉換成字典;如下所示
postdata = ‘‘‘{‘userName‘:‘13718651996‘, ‘passwd‘:‘yhlxxxx870120‘, ‘validateCode‘:‘abc‘, ‘rememberMe‘:‘true‘}‘‘‘ url = ‘https://secure.elong.com/passport/ajax/elongLogin‘ request = Session().post(url,data=eval(postdata)) print(request.json())
有人可能會說,你這不是多此一舉嗎?把postdata直接定義成字典不就行了;你說的沒錯確實可以這樣
postdata = {‘userName‘:‘13718651996‘, ‘passwd‘:‘yhlxxxx870120‘, ‘validateCode‘:‘abc‘, ‘rememberMe‘:‘true‘} url = ‘https://secure.elong.com/passport/ajax/elongLogin‘ request = Session().post(url,data=postdata) print(request.json())
但是如果以下這串數據,存儲在數據庫中,或者excel中,讀出來的時候默認就是字符串,如果讀出來直接使用就會出現本文的錯誤,
所以哪裏錯了這個要知道,這是一個小細節;調試輸出,發現輸出跟以下是一樣的,
沒有錯呀這是字典呢{‘xxxx‘:‘xxx‘..........},但是它就是字符串。容易被忽略,所以還要使用eval(postdata)函數轉成字典
{‘userName‘:‘13718651996‘, ‘passwd‘:‘yhlxxxx870120‘, ‘validateCode‘:‘abc‘, ‘rememberMe‘:‘true‘}
正確代碼:
postdata = ‘‘‘{‘userName‘:‘13718651996‘, ‘passwd‘:‘yhlxxxx870120‘, ‘validateCode‘:‘abc‘, ‘rememberMe‘:‘true‘}‘‘‘ url = ‘https://secure.elong.com/passport/ajax/elongLogin‘ request = Session().post(url,data=eval(postdata)) print(request.json())
------------------------------我是華麗的分隔線----------------------------------
2、
Python使用中錯誤(持續更新.....)