Maison  >  Article  >  développement back-end  >  Explication détaillée de la solution d'erreur python-bilibili

Explication détaillée de la solution d'erreur python-bilibili

高洛峰
高洛峰original
2017-03-27 15:46:323516parcourir

Avant d'obtenir le numéro de chambre, nous résolvons d'abord le bug laissé dans l'article précédent, c'est-à-dire le problème causé par le fait que le numéro de chambre saisi n'est pas un numéro et que le numéro de chambre correspondant n'existe pas.

Le numéro de chambre saisi n'est pas un nombre :

En python, ce que vous saisissez doit être une chaîne Bien que vous saisissiez un nombre, le type est toujours str.


roomId = input('请输入房间号:')

En utilisant le code de l'article précédent, testons-le

详解python - bilibili出错的解决办法

En python, uniquement Seuls ceux du même type peut être connecté avec "+", donc le code de notre article précédent peut également être modifié en


roomUrl = 'http://live.bilibili.com/'+ roomId

Maintenant que nous avons élargi nos connaissances, résolvons le problème maintenant. Il existe des méthodes de traitement de chaînes dans le puissant Python. Il ne nous reste plus qu'à déterminer si les caractères saisis sont des nombres. L’appel de la fonction isdigit() peut compléter l’exigence. Il existe d'autres méthodes de traitement de chaînes que je vais trier et publier sur le blog.

isdigit() Signification : renvoie True si la chaîne ne contient que des chiffres, sinon renvoie False.

Le programme se termine une fois le jugement terminé. Ce n'est pas ce que nous voulons. Ce dont nous avons besoin, c'est d'un jugement infini. Si ce n'est pas un nombre, nous devons revenir en arrière et le ressaisir. un certain nombre, nous devons passer à l'étape suivante.

Idées :

1. Entrez le numéro de la chambre.

2. Déterminez si l'entrée est un nombre.

3. S'il s'agit d'un numéro, passez à l'étape suivante ; si ce n'est pas un numéro, saisissez-le à nouveau.

4. Une fois la saisie terminée, jugez à nouveau, puis faites un cycle.

Code :


roomId = input('请输入房间号:')while not roomId.isdigit():     
print("数字格式错误,请重新输入!")
     roomId = input('请输入房间号:')
roomUrl = 'http://live.bilibili.com/'+ str(roomId)

Rendu :

详解python - bilibili出错的解决办法

Regardez le rendu, numéro de chambre Il doit également être ressaisi s'il est vide, et la forme des chiffres et des lettres doit également être ressaisie. S'il répond à nos besoins, nous continuerons à résoudre le prochain bug.

La salle saisie n'existe pas (c'est-à-dire que l'URL n'existe pas) :

Ceci sert à la gestion des exceptions du programme. Il nous suffit de trouver la cause de l'erreur du programme.

详解python - bilibili出错的解决办法

Concentrez-vous sur la dernière phrase, urllib.error.HTTPError : HTTP Error 404 : Not Found

Page Web 404, aucune page Web trouvée. Cela signifie que l'adresse Web que vous avez saisie n'existe pas. Utilisez try-sauf pour résoudre cette erreur.

Idées :

1. Lorsque vous accédez à un site Web, vous ne savez pas s'il est là ou non

2. Essayez d'accéder à cette adresse

3. Si vous faites une erreur, vous devez ressaisir l'URL

4. Pour ressaisir l'URL, vous devez commencer par saisir le numéro de la chambre

5. Le grand la boucle, c'est quand l'URL est fausse au début, et la petite boucle consiste à déterminer le numéro de la chambre

6, l'URL saisie existe, alors vous devez sortir de cette grande boucle

Code :

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('出错啦!')
Cependant, l'expérience utilisateur n'est pas très bonne et nous ne savons pas ce qui n'a pas fonctionné, nous apportons donc les raisons spécifiques sont


except urllib.error.HTTPError as reason:          
print('网址出错啦!'+ str(reason))
Rendu :

详解python - bilibili出错的解决办法

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn