Вопрос по python, beautifulsoup – BeautifulSoup "не имеет атрибута" HTML_ENTITIES

4

Я недавно обновил BeautifulSoup с версии 3.0 до версии 4.1 на компьютере с Windows.

Теперь я получаю странную ошибку:

File "C:\path\to\myscript.py", line 23
0, in soupify
    return BeautifulSoup(html, convertEntities=BeautifulSoup.HTML_ENTITIES)
AttributeError: type object 'BeautifulSoup' has no attribute 'HTML_ENTITIES'

Вот фрагмент кода, который вызывает исключение:

def soupify(html):
    return BeautifulSoup(html, convertEntities=BeautifulSoup.HTML_ENTITIES)

В документе для BS не упоминается, как сигнатура конструктора изменилась с v3 на v4. Как я могу это исправить?

Ваш Ответ

3   ответа
5

corresponding Unicode character. Beautiful Soup 3 had a number of overlapping ways of dealing with entities, which have been removed. The BeautifulSoup constructor no longer recognizes the smartQuotesTo or convertEntities arguments. (Unicode, Dammit still has smart_quotes_to, but its default is now to turn smart quotes into Unicode.)

If you want to turn those Unicode characters back into HTML entities on output, rather than turning them into UTF-8 characters, you need to use an output formatter.

Источник:http://www.crummy.com/software/BeautifulSoup/bs4/doc/#entities

0

from BeautifulSoup import *

Просто делать:

 import BeautifulSoup
0

вероятно, является лучшим, но убедитесь, что с пространствами имен не возятся. Если я правильно помню,HTML_ENTITIES является частьюBeautifulStoneSoup пространство имен, а неBS один. Похоже, вы сделалиfrom BeatifulSoup import * из-за того, как вы звонитеBeautifulSoup(html, etc) без ссылки на модуль, из которого он взят.

Так что постарайтесьreturn BeautifulSoup(html, convertEntities=BeautifulStoneSoup.HTML_ENTITIES) и посмотреть, если это работает.

О, приятно знать. Спасибо.
В BS3 эти константы были определены в BeautifulStoneSoup, но BeautifulSoup подклассифицировал BeautifulStoneSoup, так что BeautifulSoup.HTML_ENTITIES сработал. Я удалил эти константы, потому что они настроили функцию - преобразование некоторых, но не всех сущностей в символы Юникода - которых больше не существует. Сам класс BeautifulStoneSoup устарел; теперь вы пишете BeautifulSoup (разметка, & quot; xml & quot;).

Похожие вопросы