在获取房间号之前我们先解决上篇文章遗留的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(一)获取直播间标题

系列下一章:python - bilibili(三)wireshark分析

最新文章

  1. ORacle修改表列长度
  2. Python swapcase()方法
  3. zw版【转发·台湾nvp系列Delphi例程】HALCON HImage与Bitmap格式转换
  4. Mac OS X操作系统常见快捷键集锦
  5. C语言基础学习基本数据类型-变量的命名
  6. Array类的Sort()方法
  7. C++入门笔记(二)变量和基本类型
  8. 虚拟机下hadoop1.1.2安装(单机版)与(集群版)
  9. 使用openSSL开源工具进行SSL/TLS 安全测试
  10. easyui---form表单_validatebox验证框
  11. linux中date命令显示
  12. vbs解析 JSON格式数据
  13. 去除Android APP里面的广告
  14. Java内存区域与各区域OOM
  15. BDE 退出历史 迁移至FireDAC
  16. 基于OpenGL编写一个简易的2D渲染框架-07 鼠标事件和键盘事件
  17. Devexpress系列一 之 ChartControl 柱形图BarSideBySideSeries2D
  18. TiXmlHandle的使用-简化tinyxml的代码
  19. centos 7 防火墙设置
  20. js 验证 -身份证等

热门文章

  1. POJ 2373 Yogurt factory
  2. delphi显示hello world 和退出程序
  3. C#的逆变和协变
  4. Win10 的虛擬桌面
  5. 在centos 6.5 x64中安装 spark-1.5.1
  6. 上传文件到linux服务器
  7. delphi 获得memo,Richedit焦点所在行
  8. Windows server 2008 R2 64位系统安装ZendOptimizer-3.3.0a-Wind
  9. jQuery克隆DOM节点
  10. cgLib生成动态代理