Получение ошибки: имя 'html' не определено при попытке реализовать простую программу для цикла ответа HTTP-запроса с использованием библиотеки urllib в python.
Я изучаю библиотеку BeautifulSoup на python и наткнулся на библиотеку urllib, чтобы лучше понять цикл HTTP-запрос-ответ.
В следующем коде я пытаюсь удалить все теги привязки, которые есть на этой HTML-странице, но получаю сообщение об ошибке: NameError: name 'html' не определено
Я попытался решить проблему с помощью Google и обнаружил следующий важный вопрос Stackru: ошибка имени 'html' не определена с beautifulsoup4.
Я попробовал данное решение, но оно не могло работать.
import urllib
from bs4 import BeautifulSoup
url=input('Enter- ')
req_file=urllib.request.urlopen(url).read()
soup=BeautifulSoup(html,"html.parser")
tags=soup('a')
for tag in tags:
print(tag.get('href',None))
1 ответ
Вы сохраняете чтение как переменную reg_file
:
req_file=urllib.request.urlopen(url).read()
но когда вы пытаетесь передать его BeautifulSoup, он ищет переменную html
, который не был определен как что-либо, следовательно, 'html' is not defined
ошибка
soup=BeautifulSoup(html,"html.parser")
так что вариант либо сохранить request
.read()
как переменная html
:
html=urllib.request.urlopen(url).read()
soup=BeautifulSoup(html,"html.parser")
или передать то, что вы изначально сохранили, req_file
в BeautifulSoup:
req_file=urllib.request.urlopen(url).read()
soup=BeautifulSoup(req_file,"html.parser")
надеюсь, что объяснение помогает. Я все еще изучаю BeautifulSoup, но могу вспомнить все трудности в начале. Это весело, когда вы немного освоитесь.
import urllib
from bs4 import BeautifulSoup
url=input('Enter- ')
req_file=urllib.request.urlopen(url).read()
soup=BeautifulSoup(req_file,"html.parser")
tags=soup('a')
for tag in tags:
print(tag.get('href',None))