3
respostas

Pq apareceu o seguinte retorno? Oq eu fiz de errado

NameError Traceback (most recent call last) ~\AppData\Local\Temp/ipykernel_6708/1010376174.py in 21 print(e.reason) 22 ---> 23 html = html.decode('utf-8') 24 25 def trata_html(input):

NameError: name 'html' is not defined

from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError
from bs4 import BeautifulSoup

url = 'https://www.alura.com.br'
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36'}

req = Request(url, headers = headers)
response = urlopen(req)
print(response.read())

try:
    req = Request(url, headers = headers)
    response = urlopen(req)
    print(response.read())

except HTTPError as e:
    print(e.status, e.reason)

except URLError as e:
    print(e.reason)

html = html.decode('utf-8')

def trata_html(input):
    return " ".join(input.split()).replace('> <', '><')

html = trata_html(html)
html

soup = BeautifulSoup(html, 'html.parser')
soup

print(soup.prettify())
3 respostas

Oi Maria, boa tarde!

Esse erro está acontecendo porque quando você chama

html = html.decode('utf-8')

ele não encontra nenhuma variável com o nome "html".

Sempre que houver este tipo de erro -> NameError: name 'xxxxx' is not defined -> significa que em seu codigo a variável não foi referênciada anteriormente.

Obrigada! Mas a variável já não está declarada? O que faço para declará-la?

Repare que você declara a variável html nesta linha:

html = html.decode('utf-8')

então, pelo o que entendi, o seu código deveria estar mais ou menos dessa forma:

html = response.read()
html = html.decode("utf-8")