Как заставить BeautifulSoup извлечь содержимое определенного тега в виде текста? (не касаясь этого) - PullRequest
3 голосов
/ 07 февраля 2011

Мне нужно разобрать HTML-документ, который содержит теги "code"

Я получаю блоки кода, подобные этим:

soup = BeautifulSoup(str(content))
code_blocks = soup.findAll('code')

Проблема в том, если у меня есть кодтег, подобный этому:

<code class="csharp">
    List<Person> persons = new List<Person>();
</code>

BeautifulSoup вызывает закрытие вложенных тегов и преобразует блок кода в:

<code class="csharp">
    List<person> persons = new List</person><person>();
    </person>
</code>

Есть ли способ извлечь содержимое тегов кода в виде текстас BeautifulSoup, не позволяя ему исправить то, что ИТ-специалисты считают ошибками HTML-разметки?

1 Ответ

7 голосов
/ 07 февраля 2011

Добавьте тег кода в словарь QUOTE_TAGS.

from BeautifulSoup import BeautifulSoup

content = "<code class='csharp'>List<Person> persons = new List<Person>();</code>"

BeautifulSoup.QUOTE_TAGS['code'] = None
soup = BeautifulSoup(str(content))
code_blocks = soup.findAll('code')

Вывод:

[<code class="csharp"> List<Person> persons = new List<Person>(); </code>]
...