Получение ошибки: имя '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))
Другие вопросы по тегам