2013-04-30 4 views
0

BeautifulSoup 3 имеет приятную функцию, что он не будет пытаться интерпретировать содержимое тега <textarea> как html - вместо этого он цитирует его как текст. Такое поведение может быть выполнено для других тегов, изменяя атрибут QUOTE_TAGS. Вот как это можно пригодиться an illustration.Извлечь содержимое тега как текст (эквивалент QUOTE_TAGS) в BeautifulSoup 4

В BeautifulSoup 4 нет атрибута QUOTE_TAGS, и я не вижу возможности получить такую ​​же функциональность без подкласса html.parser. Я что-то упускаю? Как бы вы решили проблему, связанную выше, используя BS4?

ответ

1

У Beautiful Soup 4 нет QUOTE_TAGS, поскольку он не имеет собственного анализатора: он полагается на внешние парсеры. Различные парсеры обрабатывают одну и ту же разметку по-разному, и вы обнаружили одно из этих различий.

Анализатор lxml и встроенный html.parser Python обрабатывают содержимое <textarea> как разметку HTML. Парсер html5lib обрабатывает содержимое <textarea> как необработанные данные. Рассказывая Beautiful Soup использовать html5lib даст вам результат вы хотите:

BeautifulSoup(markup, "html5lib") 

Вам необходимо установить html5lib, конечно.

+0

У меня наконец появился шанс попробовать, и, действительно, html5lib ведет себя гораздо более похоже на парсер bs3 в этом отношении. Спасибо за этот ответ! –

Смежные вопросы