gpt4 book ai didi

python - BeautifulSoup 和转换 HTML 实体的奇怪行为

转载 作者:太空宇宙 更新时间:2023-11-04 10:51:46 27 4
gpt4 key购买 nike

我在从 HTML 转换特殊字符时遇到一个奇怪的问题。我有一个 Django 项目,其中文本以 HTML 编码的形式存储在 MySQL 数据库中。这是必要的,因为我不想丢失文本的任何格式。

在初步步骤中,我必须对文本进行一些操作,例如计算位置,因此我需要先将其转换并从所有 HTML 标签中清除它。这是由 BeautifulSoup 完成的:

convertedText = str(BeautifulSoup(text.text, convertEntities=BeautifulSoup.HTML_ENTITIES))
convertedText = ''.join(BeautifulSoup(convertedText).findAll(text=True))

通过在我的 Django-default 测试服务器上工作,一切正常,但是当我在我的生产服务器上运行它时,在转换特殊字符时会出现奇怪的行为。

一个例子:

测试服务器

MySQL-Query 给我:<p>bassverst&auml;rker</p>

正确转换为:bassverstärker

生产服务器

MySQL-Query 给我:<p>bassverst&auml;rker</p>

这被错误地转换为:bassverst\ucc44rker

不知何故 &auml;转换为 \ucc44这会导致字符错误。

我的配置:

测试服务器:

  • Django 内置解决方案 ( python manage.py runserver )
  • BeautifulSoup 3.2.1
  • python 2.6.5
  • Ubuntu 2.6.32-43-通用

生产服务器:

  • 切诺基 1.2.101
  • BeautifulSoup 3.2.1
  • python 2.7.3
  • Ubuntu 3.2.0-32-generic

因为我不知道错误发生在哪个级别,所以想请教一下有没有人可以帮我解决这个问题。非常感谢。

最佳答案

我找到了解决这个问题的方法。我不知道 BeautifulSoup 有内置方法 getText()。通过以下方式转换 HTML 时:

convertedText = BeautifulSoup(text.text, convertEntities=BeautifulSoup.HTML_ENTITIES).getText()

一切都在两台服务器上正常工作。尽管这可行,但了解为什么在使用问题中的示例时两台服务器的行为不同会很有趣。

不过,还是感谢大家。

关于python - BeautifulSoup 和转换 HTML 实体的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13376417/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com