Ошибка имени 'html' не определена с Beautifulsoup4
Мой код на Python 3.4.4:
import urllib.request
from bs4 import BeautifulSoup
from html.parser import HTMLParser
urls = 'file:///C:/Users/tarunuday/Documents/scrapdata/mech.html'
htmlfile = urllib.request.urlopen(urls)
soup = BeautifulSoup(htmlfile,html.parser)
Я получаю эту ошибку
Traceback (most recent call last):
File "C:\Python34\saved\scrapping\scrapping2.py", line 7, in <module>
soup = BeautifulSoup(htmlfile,html.parser)
NameError: name 'html' is not defined
Теперь я понимаю, что HTMLParser - это py2.x, а html.parser - это py3.x, но как мне заставить это работать? На сайте bs4 написано If you get the ImportError “No module named html.parser”, your problem is that you’re running the Python 3 version of the code under Python 2.
, но я использую 3.x и получаю NameError, а не ImportError
1 ответ
Ошибка правильная, вы не определили html
в любом месте. Документация, на которую вы ссылаетесь, показывает, что вы должны проходить "html.parser"
в виде строки; Похоже, вам вообще не нужно импортировать HTMLParser.
В вашем коде html.parser
- это строка, и если вы используете python 3 или выше, для нее нужны кавычки.