python - bilibili(二)出错的解决办法
在获取房间号之前我们先解决上篇文章遗留的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(二)出错的解决办法的更多相关文章
- excel第一次打开报错 向程序发送命令时出错 多种解决办法含终极解决方法
excel第一次打开报错 向程序发送命令时出错 多种解决办法含终极解决方法 office2007应该遇到“向程序发送命令时出现 问题”,设置为以管理员运行也不好用,重装office也不好用,下面介绍下 ...
- 【Thymeleaf】Thymeleaf模板对没有结束符的HTML5标签解析出错的解决办法
解决方案 spring: thymeleaf: mode: LEGACYHTML5 <dependency> <groupId>net.sourceforge.nekohtml ...
- 使用CocoaPods更新第三方库出错的解决办法
使用CocoaPods更新第三方库出错的解决办法 执行完pod install或pod update之后,控制台抛出以下警告信息: [!] The xx [Debug] target override ...
- Springboot(八):emoji表情保存到mysql出错的解决办法
emoji表情保存到mysql出错的解决办法 今天,在前端的说明信息中输入emoji表情的时候,插入数据库会报错 百度了一下,是因为mysql数据库的字符编码集不正确,utf8无法存入表情字符,只能将 ...
- Win7安装Oracle Instantclient ODBC驱动 后配置DSN时出错的解决办法 SQORAS32
安装过程简述 oracle官网下载了 instantclient-odbc-nt--.zip instantclient-basic-nt-.zip 我这是32位版的win7,按照需要下载对应的版本. ...
- 第一次打开pycharm运行python文件报错”No Python interpreter selected“问题的解决办法
前面没有细讲,这里细述一下安装pycharm后,第一次打开pycharm运行python文件报错"No Python interpreter selected"问题的解决办法. 出 ...
- 转:阿里旺旺导致python安装包失败的解决办法
我以前使用web.py没事,今天运行时报错, mimetypes.init() # try to read system mime.types File "D:\ProgramFiles\p ...
- python—— 写入错误UnicodeEncodeError的解决办法
在写python爬虫过程中,有时候吧结果写入到txt文件,但是会遇到UnicodeEncodeError. 错误原因—— 把文件内容,写入到文件中时,出错了. 而出错的原因其实是,python系统,在 ...
- dede自定义表单放首页出错的解决办法
一.当自定义表单放首页提交的时候跳出这个页面怎么解决 二.解决办法 可能有多个from表单提交出错,也就是代码冲突的意思,只要把代码检查好,from提交不要重复冲突就可以了
随机推荐
- (中等) UESTC 94 Bracket Sequence,线段树+括号。
There is a sequence of brackets, which supports two kinds of operations. we can choose a interval [l ...
- UVA 11551 Experienced Endeavour
矩阵快速幂. 题意事实上已经告诉我们这是一个矩阵乘法的运算过程. 构造矩阵:把xi列的bij都标为1. 例如样例二: #include<cstdio> #include<cstrin ...
- 在线文档转换API word,excel,ppt等在线文件转pdf、png
在线文档转换API提供word,excel,ppt等在线文件转pdf.png等,文档:https://www.juhe.cn/docs/api/id/259 接口地址:http://v.juhe.cn ...
- Python字符串的encode与decode研究心得——解决乱码问题
转~Python字符串的encode与decode研究心得——解决乱码问题 为什么Python使用过程中会出现各式各样的乱码问题,明明是中文字符却显示成“/xe4/xb8/xad/xe6/x96/x8 ...
- php部分--文件操作
php中的文件指的是文件和文件夹,不是单指文件. 1.判断文件(判断是文件还是文件夹) 找文件,输出结果为file,代表的是文件. var_dump(filetype("./aa.txt&q ...
- NSDateFormatter调整时间格式的代码
NSDateFormatter调整时间格式的代码 在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理.例如://实例化一个NSDat ...
- 支付宝WAP支付接口开发
支付宝WAP支付接口开发 因项目需要,要增加支付宝手机网站支付功能,找了支付宝的样例代码和接口说明,折腾两天搞定,谨以此文作为这两天摸索的总结.由于公司有自己的支付接口,并不直接使用这个接口,所以晚些 ...
- 用简单的http抓包来实现微信公众网页如何模拟登录
一.准备工具: 系统:XP 浏览器:IE8 抓包工具:HttpWatch(它可以查看url请求的数据包) 二.抓包思路: 浏览器上的任何获取数据的方式都符合http协议的请求,只要发送符合要求的数据就 ...
- IOS开发-UI学习-使用UIImageView控件制作动画
先添加40张tomcat的图片到资源列表中:名称为cat_eat0000.jpg到cat_eat0039.jpg. 1.定义所需控件 // 定义按钮,图片控件.可变数组对象 UIButton *act ...
- 不错的Django技术网址
Ajax与json需要看得 http://stackoverflow.com/questions/30243101/return-queryset-as-json