Dor*_*Dor 10 html python django beautifulsoup pygments
我正在和Django一起写博客应用程序.我想让评论编写者使用一些标签(比如<strong>,a等等)但禁用所有其他标签.
另外,我想让他们把代码放在<code>标签中,并让pygments解析它们.
例如,有人可能会写这个评论:
I like this article, but the third code example <em>could have been simpler</em>:
<code lang="c">
#include <stdbool.h>
#include <stdio.h>
int main()
{
    printf("Hello World\n");
}
</code>
问题是,当我使用BeautifulSoup解析注释以去除不允许的HTML标记时,它还会解析<code>块的内部,并将<stdbool.h>和<stdio.h>视为HTML标记.
我怎么能告诉BeautifulSoup不要解析<code>块?也许还有其他HTML解析器更适合这份工作?
问题在于,<code>按照 HTML 标记的正常规则进行处理,<code>标签内的内容仍然是 HTML(标签的存在主要是为了驱动 CSS 格式,而不是改变解析规则)。
您想要做的是创建一种与 HTML 非常相似但不相同的不同标记语言。简单的解决方案是假设某些规则,例如“<code>并且</code>必须单独出现在一行上”,并自己进行一些预处理。
^<code>$和替换<code><![CDATA[为。它并不完全可靠,因为如果代码块包含,事情就会变得非常错误。^</code>$]]></code>]]><可能>就足够了) 。您可以通过将您标识的每个代码块传递给 来完成此操作。&<>&cgi.escape(code_block)完成预处理后,像往常一样将结果提交给 BeautifulSoup。
\n| 归档时间: | 
 | 
| 查看次数: | 1528 次 | 
| 最近记录: |