2011-02-07 57 views
3

我需要解析其中包含“代码”标签如何判断BeautifulSoup是否将特定标签的内容提取为文本? (不接触)

我得到的代码块像这样的html文件:

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

的问题是,如果我有一个代码标签是这样的:

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

BeautifulSoup ForSE召开前夕嵌套标签的关闭和变换的代码块划分成:

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

有没有什么办法可以将BeautifulSoup中的代码标签的内容作为文本提取出来,而不会让它修复它认为是HTML标记错误的内容?

+3

嗯,这是* * errenous标记。尖括号应该与实体一起转义(<...>)。 – delnan 2011-02-07 15:33:38

+0

是的,这是我的实际解决方案,但我不想让我的所有代码片段都到处都是<和>。我想找到一种更清洁的方式,不要强迫我每次都必须在我的博客上发布所有代码片段。 – BFil 2011-02-07 15:37:41

回答

7

将代码标记添加到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>]