Ошибка имени '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 или выше, для нее нужны кавычки.

Другие вопросы по тегам