在获取房间号之前我们先解决上篇文章遗留的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分析

python - bilibili(二)出错的解决办法的更多相关文章

  1. excel第一次打开报错 向程序发送命令时出错 多种解决办法含终极解决方法

    excel第一次打开报错 向程序发送命令时出错 多种解决办法含终极解决方法 office2007应该遇到“向程序发送命令时出现 问题”,设置为以管理员运行也不好用,重装office也不好用,下面介绍下 ...

  2. 【Thymeleaf】Thymeleaf模板对没有结束符的HTML5标签解析出错的解决办法

    解决方案 spring: thymeleaf: mode: LEGACYHTML5 <dependency> <groupId>net.sourceforge.nekohtml ...

  3. 使用CocoaPods更新第三方库出错的解决办法

    使用CocoaPods更新第三方库出错的解决办法 执行完pod install或pod update之后,控制台抛出以下警告信息: [!] The xx [Debug] target override ...

  4. Springboot(八):emoji表情保存到mysql出错的解决办法

    emoji表情保存到mysql出错的解决办法 今天,在前端的说明信息中输入emoji表情的时候,插入数据库会报错 百度了一下,是因为mysql数据库的字符编码集不正确,utf8无法存入表情字符,只能将 ...

  5. Win7安装Oracle Instantclient ODBC驱动 后配置DSN时出错的解决办法 SQORAS32

    安装过程简述 oracle官网下载了 instantclient-odbc-nt--.zip instantclient-basic-nt-.zip 我这是32位版的win7,按照需要下载对应的版本. ...

  6. 第一次打开pycharm运行python文件报错”No Python interpreter selected“问题的解决办法

    前面没有细讲,这里细述一下安装pycharm后,第一次打开pycharm运行python文件报错"No Python interpreter selected"问题的解决办法. 出 ...

  7. 转:阿里旺旺导致python安装包失败的解决办法

    我以前使用web.py没事,今天运行时报错, mimetypes.init() # try to read system mime.types File "D:\ProgramFiles\p ...

  8. python—— 写入错误UnicodeEncodeError的解决办法

    在写python爬虫过程中,有时候吧结果写入到txt文件,但是会遇到UnicodeEncodeError. 错误原因—— 把文件内容,写入到文件中时,出错了. 而出错的原因其实是,python系统,在 ...

  9. dede自定义表单放首页出错的解决办法

    一.当自定义表单放首页提交的时候跳出这个页面怎么解决 二.解决办法 可能有多个from表单提交出错,也就是代码冲突的意思,只要把代码检查好,from提交不要重复冲突就可以了

随机推荐

  1. 服务器性能分析工具gprof的使用及没有生成gmon.out文件的原因

            早上从网上查看资料时无意中看到了gprof这个工具,随便把他用在项目里试了一下.结果发现调用次数的数据比较全,但调用时间基本上都是0.网上查了一下发现gprof只记录执行时间超过0.0 ...

  2. MQTT研究

    http://www.jianshu.com/collection/1c742515f8d8 http://blog.csdn.net/gaojq_ios/article/details/481597 ...

  3. 【转】聊聊HTTPS和SSL/TLS协议

    要说清楚 HTTPS 协议的实现原理,至少需要如下几个背景知识.1. 大致了解几个基本术语(HTTPS.SSL.TLS)的含义2. 大致了解 HTTP 和 TCP 的关系(尤其是“短连接”VS“长连接 ...

  4. HTML 学习笔记 JQuery(表单,表格 操作)

    表单应用 一个表单有3个基本组成部分 (1)表单标签:包含处理表单数据所用的服务器端程序URL 以及数据提交到服务器的方法 (2)表单域:包含文本框 密码框 隐藏框 多行文本框 复选框 单选框 下拉选 ...

  5. 设置MyEclipse黑色主题背景

    设置MyEclipse黑色主题背景 1. 下载 http://eclipsecolorthemes.org/  看哪个合适直接点击进入, 下载右边的epf 2. 下载完成...打开myeclipse. ...

  6. git 关联远程库(https协议)

    1.在oschina上新建库 2.在本地文件夹右键->"git Bash here" 3.设置全局变量: git config --global user.name &quo ...

  7. bitmap 加载的时候出现OOM,nullpointer

    1.OOM :对图片进行压缩,效果还不错:http://182.92.150.15:9876/static/server/topic_user/8068/201506/e5b37fec-0919-11 ...

  8. 高尔夫 之 TEE

    黑色:男子职业选手蓝色:男子业余高手.女子职业选手白色:男子初学球手.老年球手.女子业余高手红色:女子选手金色:有的球场做为介于 黑Tee (职业球员)与 蓝Tee (业余高手)之间的Tee 台:有的 ...

  9. IE6滤镜在实战测试中能让父层里面的子元素产生阴影

    1.写法一: <div class="cornerbg">    <p class="title-file">------</p& ...

  10. HDU-1879-继续畅通工程(并查集)

    题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=1879 这题做的我好尴尬,虽然自己做出来了,感觉也不难,不过怎觉得, 对这个最小生成树的理解,好像总隔了 ...