在取得房間號碼之前我們先解決上篇文章遺留的bug,即輸入的房間號碼不是數字和對應的房間號碼不存在而產生的問題。
輸入的房間號碼不是數字:
在python中,你所輸入的必定是字串,雖然你輸入的是數字,但類型還是str。
roomId = input('请输入房间号:')
運用上一篇文章的程式碼,我們來測試一下
在python中,只有同一型的才能用"+"來連接,所以我們上一篇文章的程式碼也可以改成
roomUrl = 'http://live.bilibili.com/'+ roomId
拓展知識完畢,現在來解決問題。強大的python中有字串處理的方法,現在我們只需要判斷所輸入的字元是不是數字就行。呼叫isdigit()函數即可完成需求。還有其他的字串處理方法我會整理出來發到部落格。
isdigit() 意義:如果字串只含有數字則傳回True,否則傳回 False。
判斷完畢後程式就結束了,這是不是我們想要的,我們需要的是無限判斷,不是數字的話就要返回去重新輸入,是數字則要進行下一步。
想法:
1、輸入房間號碼。
2、判斷所輸入的是不是數字。
3、是數字則進行下一步;不是數字要重新輸入。
4、輸入完畢後再判斷,由此循環。
程式碼:
roomId = input('请输入房间号:')while not roomId.isdigit(): print("数字格式错误,请重新输入!") roomId = input('请输入房间号:') roomUrl = 'http://live.bilibili.com/'+ str(roomId)
效果圖:
看效果圖,房間號碼是空也需要重新輸入,數字加字母的形式也需要重新輸入,滿足我們的需求呢,我們繼續解決下一個bug。
輸入的房間不存在(即網址不存在):
這個是屬於程式異常處理方面,我們只需要找出程式的報錯原因即可。
重點看最後一句,urllib.error.HTTPError: HTTP Error 404: Not Found
網頁404,找不到網頁。說明你輸入的網頁位址不存在。使用try-except來解決這個錯誤。
思路:
1、存取一個網址是並不知道它在不在
2、試著存取這個位址
3、出錯則需要重新輸入網址
4、重新輸入網址需要從輸入房間號碼開始
5、大循環是一開始到網址出錯,小循環就是判斷房間號碼
6 、輸入的網址存在,那麼就需要跳出這個大循環了
代碼:
while True: roomId = input('请输入房间号:') while not roomId.isdigit(): print("数字格式错误,请重新输入!") roomId = input('请输入房间号:') roomUrl = 'http://live.bilibili.com/'+ str(roomId) try: webPage=urllib.request.urlopen(roomUrl) break except: print('出错啦!')
不過,這樣用戶體驗不太好,並不知道哪裡出錯了,所以我們帶上具體原因
except urllib.error.HTTPError as reason: print('网址出错啦!'+ str(reason))
效果圖:
以上是詳解python - bilibili出錯的解決辦法的詳細內容。更多資訊請關注PHP中文網其他相關文章!