Получение ошибки: имя 'html' не определено при попытке реализовать простую программу для цикла ответа HTTP-запроса с использованием библиотеки urllib в python. - PullRequest
0 голосов
/ 21 декабря 2018

Я изучаю библиотеку BeautifulSoup на python и наткнулся на библиотеку urllib, чтобы лучше понять цикл HTTP-запрос-ответ.

В следующем коде я пытаюсь удалить все теги привязки, которые есть наэтой HTML-страницы и получая ошибку: NameError: имя 'html' не определено

Я попытался решить проблему с помощью Google и нашел следующий соответствующий вопрос StackOverflow: nameошибка '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 Ответ

0 голосов
/ 21 декабря 2018

Вы сохраняете чтение как переменную 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))
...