1
votes

NameError in Beautiful Soup

Je suis nouveau sur Python. Chaque fois que j'utilise Try Except, NameError apparaît. Cela fonctionne parfaitement lorsqu'il n'y a pas de gestion des exceptions.

HTTP Error 404: Not Found
Traceback (most recent call last):line 12, in <module>
bs = BeautifulSoup(htm.read(), 'html.parser')
NameError: name 'htm' is not defined

Erreur de sortie

from urllib.request import urlopen
from bs4 import BeautifulSoup
from urllib.error import HTTPError


try:
    htm = urlopen('https://uiit.tech/placements/placements.pp')
except HTTPError as e:
    print(e)


bs = BeautifulSoup(htm, 'html.parser')
print(bs.h1)


2 commentaires

Où obtenez-vous NameError ? Veuillez ajouter le message d'erreur complet.


Pour éviter d'avoir NameError , vous pouvez utiliser html = "" juste avant print (e) .


3 Réponses :


0
votes

Essayez de faire:

except urllib.error.HTTPError as e:

    print(e)


0 commentaires

0
votes

vous vous trompez

htm = urlopen (' https://uiit.tech/placements/placements.pp ')

cela devrait être:

htm = urlopen (' https://uiit.tech/placements/placements.php ')


1 commentaires

J'ai fait cela intentionnellement pour vérifier l'exception de HTTPError 404. Parce qu'il donnera une exception qui sera traitée ensuite.



0
votes

Vous voulez que la tentative fonctionne avec html dans la section try . Actuellement, en raison d'une exception, il n'est jamais défini.

from urllib.request import urlopen
from bs4 import BeautifulSoup
from urllib.error import HTTPError

try:
    htm = urlopen('https://uiit.tech/placements/placements.pp')  
    bs = BeautifulSoup(htm, 'html.parser')
    print(bs.h1)
except HTTPError as e:
    print(e)


1 commentaires

Merci Cela a fonctionné. Cette NameError était due à la portée de la variable dans le bloc TRY.