До версии 3.0.5 BeautifulSoup обрабатывал содержимое ‹textarea> как HTML. Теперь он воспринимает это как текст. В документе, который я разбираю, есть HTML внутри тегов textarea, и я пытаюсь его обработать.
Я пробовал:
for textarea in soup.findAll('textarea'):
contents = BeautifulSoup.BeautifulSoup(textarea.contents)
textarea.replaceWith(contents.html(text=True))
Но я получаю ошибки. Я не могу найти этого в документации, и альтернативные парсеры не помогают. Кто-нибудь знает, как я могу анализировать текстовые поля как HTML?
Редактировать:
Пример HTML:
<textarea class="ks-lazyload-custom">
<div class="product-view product-view-rug">
Foobar Womble
<div class="product-view-head">
<img src="tps/i1/fo-25.gif" />
</div>
</div>
</textarea>
Ошибка:
File "D:\src\cross\tserver\src\tools\sitecrawl\BeautifulSoup.py", line 1913,
in _detectEncoding '^<\?.*encoding=[\'"](.*?)[\'"].*\?>').match(xml_data)
TypeError: expected string or buffer
Я ищу способ взять элемент, извлечь содержимое, проанализировать его с помощью BeautifulSoup, свернуть его в текст, а затем заменить содержимое исходного элемента (или заменить весь элемент) этим текстом.
Что касается реального мира и спецификаций, здесь это на самом деле не особенно актуально. Данные нужно проанализировать, я ищу способ это сделать.